一、開使你的第一個(gè)DLL專案
1.File->Close all->File->New﹝DLL﹞
代碼:
//自動(dòng)產(chǎn)生Code如下
library Project2;
//這有段廢話
uses
SysUtils,
Classes;
{$R *.RES}
begin
end.
2.加個(gè)Func進(jìn)來(lái):
代碼:
library Project2;
uses
SysUtils,
Classes;
Function MyMax ( X , Y : integer ) : integer ; stdcall ;
begin
if X > Y then
Result := X
else
Result := Y ;
end ;
//切記:Library 的名字大小寫沒(méi)關(guān)系,可是DLL-Func的大小寫就有關(guān)系了。在 DLL-Func-Name寫成MyMax與myMAX是不同的。如果寫錯(cuò)了,立即 的結(jié)果是你叫用到此DLL的AP根本開不起來(lái)。
//參數(shù)的大小寫就沒(méi)關(guān)系了。甚至不必同名。如原型中是 (X,Y:integer)但引用時(shí)寫成(A,B:integer),那是沒(méi)關(guān)系的。
//切記:要再加個(gè)stdcall。書上講,如果你是用Delphi寫DLL,且希望不僅給Delphi-AP也希望BCB/VC-AP等使用的話,那你加個(gè)Stdcall ; 的指示
//參數(shù)型態(tài):Delphi有很多種它自己的變量型態(tài),這些當(dāng)然不是DLL所喜歡的,Windows/DLL的母語(yǔ)應(yīng)該是C。所以如果要傳進(jìn)傳出DLL的參數(shù),我們 盡可能照規(guī)矩來(lái)用。這兩者寫起來(lái),后者會(huì)麻煩不少。如果你對(duì)C不熟的話,那也沒(méi)關(guān)系。我們以后再講。
{$R *.RES}
begin
end.
3.將這些可共享的Func送出DLL,讓外界﹝就是你的Delphi-AP啦﹞使用:光如此,你的AP還不能用到這些,你還要加個(gè)Exports才行。
代碼:
{$R *.RES}
exports
MyMax ;
begin
end.
4.好了,可以按 Ctrl-F9編譯了。此時(shí)可不要按F9。DLL不是EXE┌不可單獨(dú)執(zhí)行的,如果你按F9,會(huì)有ErrorMsg的。這時(shí)如果DLL有Error,請(qǐng)修正之。再按Ctrl-F9。此時(shí)可能有Warning,不要緊,研究一下,看看就好。再按Ctrl-F9,此時(shí)就『Done , Compiled 』。同目錄就會(huì)有個(gè) *.dll 。恭喜,大功告成了。
1.File->Close all->File->New﹝DLL﹞
代碼:
//自動(dòng)產(chǎn)生Code如下
library Project2;
//這有段廢話
uses
SysUtils,
Classes;
{$R *.RES}
begin
end.
2.加個(gè)Func進(jìn)來(lái):
代碼:
library Project2;
uses
SysUtils,
Classes;
Function MyMax ( X , Y : integer ) : integer ; stdcall ;
begin
if X > Y then
Result := X
else
Result := Y ;
end ;
//切記:Library 的名字大小寫沒(méi)關(guān)系,可是DLL-Func的大小寫就有關(guān)系了。在 DLL-Func-Name寫成MyMax與myMAX是不同的。如果寫錯(cuò)了,立即 的結(jié)果是你叫用到此DLL的AP根本開不起來(lái)。
//參數(shù)的大小寫就沒(méi)關(guān)系了。甚至不必同名。如原型中是 (X,Y:integer)但引用時(shí)寫成(A,B:integer),那是沒(méi)關(guān)系的。
//切記:要再加個(gè)stdcall。書上講,如果你是用Delphi寫DLL,且希望不僅給Delphi-AP也希望BCB/VC-AP等使用的話,那你加個(gè)Stdcall ; 的指示
//參數(shù)型態(tài):Delphi有很多種它自己的變量型態(tài),這些當(dāng)然不是DLL所喜歡的,Windows/DLL的母語(yǔ)應(yīng)該是C。所以如果要傳進(jìn)傳出DLL的參數(shù),我們 盡可能照規(guī)矩來(lái)用。這兩者寫起來(lái),后者會(huì)麻煩不少。如果你對(duì)C不熟的話,那也沒(méi)關(guān)系。我們以后再講。
{$R *.RES}
begin
end.
3.將這些可共享的Func送出DLL,讓外界﹝就是你的Delphi-AP啦﹞使用:光如此,你的AP還不能用到這些,你還要加個(gè)Exports才行。
代碼:
{$R *.RES}
exports
MyMax ;
begin
end.
4.好了,可以按 Ctrl-F9編譯了。此時(shí)可不要按F9。DLL不是EXE┌不可單獨(dú)執(zhí)行的,如果你按F9,會(huì)有ErrorMsg的。這時(shí)如果DLL有Error,請(qǐng)修正之。再按Ctrl-F9。此時(shí)可能有Warning,不要緊,研究一下,看看就好。再按Ctrl-F9,此時(shí)就『Done , Compiled 』。同目錄就會(huì)有個(gè) *.dll 。恭喜,大功告成了。