回 帖 发 新 帖 刷新版面

主题:Delphi写的EXE可以改成DLL吗?(有代码)

我有一个小程序是DELPHI写的,我有他的代码,请问如何改成DLL呢?谢谢

回复列表 (共3个回复)

沙发

只要将工程文件头部的那个"Program"改为Library就可以了

板凳

没这么简单,要看具体的代码

3 楼

给你个简单的例子:你吧EXE工程改成DLL工程就OK了~
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)) ) ;
这个例子很简单  可以帮助你建立一个DLL文件
然后在外部调用就可以了
你可以吧你的工程文件改成DLL的就可以了 
初学者不要偷懒,找捷径是途方便只会让你有一个Delphi的空架子

我来回复

您尚未登录,请登录后再回复。点此登录或注册