精品主页 | 软件下载 | 系统下载 | 精品导航| 精彩图片 | 转帖工具 | 版主申请 | 影视下载
发新话题
打印

手把手教delphi:写你的dll文件(1)

手把手教delphi:写你的dll文件(1)

  


                  一、开使你的第一个DLL专案

  1.File->Close all->File->New﹝DLL﹞


 代码:




  //自动产生Code如下

  library Project2;

  //这有段废话

  uses

  SysUtils,

  Classes;



  {$R *.RES}



  begin

  end.






  2.加个Func进来:

  代码:




  library Project2;

  uses

  SysUtils,

  Classes;



Function MyMax ( X , Y : integer ) : integer ; stdcall ;

begin

if X > Y then

Result := X

else

Result := Y ;

end ;

//切记:Library 的名字大小写没关系,可是DLL-Func的大小写就有关系了。

// 在 DLL-Func-Name写成MyMax与myMAX是不同的。如果写错了,立即

// 的结果是你叫用到此DLL的AP根本开不起来。

//参数的大小写就没关系了。甚至不必同名。如原型中是 (X,Y:integer)但引

// 用时写成(A,B:integer),那是没关系的。

//切记:要再加个stdcall。书上讲,如果你是用Delphi写DLL,且希望不仅给

// Delphi-AP也希望BCB/VC-AP等使用的话,那你最好加个Stdcall ; 的指示

//参数型态:Delphi有很多种它自己的变量型态,这些当然不是DLL所喜欢的

// ,Windows/DLL的母语应该是C。所以如果要传进传出DLL的参数,我们

// 尽可能照规矩来用。这两者写起来,后者会麻烦不少。如果你对C不熟

// 的话,那也没关系。我们以后再讲。



  {$R *.RES}



  begin

  end.






  3.将这些可共享的Func送出DLL,让外界﹝就是你的Delphi-AP啦﹞使用:光如此,你的AP还不能用到这些,你还要加个Exports才行。

  代码:




  {$R *.RES}

  exports

  MyMax ;

  begin

  end.






  4.好了,可以按 Ctrl-F9编译了。此时可不要按F9。DLL不是EXE┌不可单独执行的,如果你按F9,会有ErrorMsg的。这时如果DLL有Error,请修正之。再按Ctrl-F9。此时可能有Warning,不要紧,研究一下,看看就好。再按Ctrl-F9,此时就『Done , Compiled 』。同目录就会有个 *.dll 。恭喜,大功告成了。



二、进行测试:开个新application:

  1.加个TButton

  代码:




  ShowMessage ( IntToStr(MyMax(30,50)) ) ;






  2.告知Exe到那里抓个Func

  代码:




  //在Form,interface,var后加

  Function MyMax ( X , Y : integer ) : integer ; stdcall ; external 'MyTestDLL.dll' ;

  // MyTestDLL.dll为你前时写的DLL项目名字

  // DLL名字大小写没关系。不过记得要加 extension的 .DLL。在Win95或NT,

  // 是不必加 extension,但这两种OS,可能越来越少了吧。要加extension




  可以了,简单吧。





  上面的例子是不是很简单?熟悉Delphi的朋友可以看出以上代码和一般的Delphi程序的编写基本是相同的,只是在TestDll函数后多了一个stdcall参数并且用exports语句声明了TestDll函数。只要编译上面的代码,就可以玫揭桓雒

TOP

发新话题