本人想做个dll,不知应如何写能否给点建意.最好能给个简单的例子

解决方案 »

  1.   

    用delphi的向導, 新建, 選擇 dll, 就可生成大概的框圖了
      

  2.   

    按 aiirii(ari) 做:下面是一个非常简单的dll,同一个函数差不多,只是在TestDll函数后多了一个stdcall参数并且用exports语句声明了TestDll函数。
    library Delphi; uses SysUtils, Classes; function TestDll(i:integer):integer;stdcall; begin Result:=i; end; exports TestDll; begin end. 
      

  3.   

    1、首先创建一个新的DLL项目(NewProject),因为DLL与调用它的主程序要分开编译。如果DLL模块已经建立在调用它的项目中(Project),则将它的窗体(Form)从Project 移出,另建一个新的项目(NewProject)。只需从File菜单选中NewProject项,然后将DLL 
    的Pas模块文件加入到项目中,再将其自动建立的Form1删除即可。 
      2、在DLL的DPR文件中把Program关键字改为Library,申明为动态链接库,在 USES 语句后面加入ExPorts语句,指明调用DLL的函数名。 
      3、如果主程序的DPR文件已有DLL窗体CreateForm的语句,则将其去掉。 
      4、在DLL的Pas文件中Type......End后加入该DLL的函数或过程的声明,形式如:  FunctionName(argment):Boolean;export; 
      该函数或过程应加入窗体的Create和Free(产生和释放)方法。 
      5、对项目进行编译即可。 
      二、DLL的调用 
      调用DLL有两种方法,一种是在应用程序装载时调用,另一种是在应用程序运行时调用。首先介绍装载时DLL的调用: 
      (1)装载时调用DLL 
    Pas文件中,对DLL函数进行外部声明,声明应位于Implementation的Uses语句后,形式如下: 
      Implementation 
      UsesDialogs; 
      functionName(argment):Boolean;far;external'Call Name'; 
      ...... 
      其中External关键字后面的引号内的字串是DLL的文件名。声明以后即可在Pas文件任何地方引用DLL函数。 
      装载时调用DLL的优点是速度较快,程序间也可共享代码。 
      (2)运行时调用DLL 
      DLL的另一种调用方法是在运行时调用。要调用到Win dows的API函数:loadlibrary, Getprocaddress等。主要用于调用DELPHI和其它语言,特别是C++编译的DLL。
     
      假定你的DLL包括一个函数: 
      FunctionMyFunc(aparam:word):string;export; 
      首先在程序Type类型声明处加入一句: 
      Type 
      TMyfuncΚfunction(aparam:word):string; 
      此句的作用如同C++中声明的函数指针。 
      然后定义如下变量 
      Var 
      aptr:TFarproc; 
      lhnd:THandle; 
      s:string; 
      其中Aptr,lhnd两变量声明必须有,s是DLL函数返回值,视情况而定。 
      在调用DLL处加入如下语句进行DLL装载: 
      lhnd:Loadlibrary('路径\DLL文件名');{ 
    如lhnd:Loadlibrary('c:\aa\bb.dll'); 
      aptr:GetprocAddress(lhnd,'Myfunc'); 
      下面可直接调用DLL了: 
      s:ΚTMyfunc(bptr)(60);{根据函数填相应的变量参数} 
      调用完以后,用FreeLibrary释放DLL占用的内存: 
      FreeLibrary(lhnd); 
    具体细节还很多,你去找本书看看嘛。