如何用Delphi编写dll文件
[11-20 17:13:35] 来源:http://www.88dzw.com 嵌入式系统 阅读:8374次
文章摘要:如何用Delphi编写dll文件一、开使你的第一个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
如何用Delphi编写dll文件,标签:嵌入式系统开发,嵌入式开发,http://www.88dzw.com如何用Delphi编写dll文件
一、开使你的第一个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函数。只要编译上面的代码,就可以玫揭桓雒 狣elphi.dll的动态链接库。现在,让我们来看看有哪些需要注意的地方:
1.在DLL中编写的函数或过程都必须加上stdcall调用参数。在delphi 1或delphi 2环境下该调用参数是far。从delphi 3以后将这个参数变为了stdcall,目的是为了使用标准的Win32参数传递技术来代替优化的register参数。忘记使用stdcall参数是常见的错误,这个错误不会影响DLL的编译和生成,但当调用这个DLL时会发生很严重的错误,导致操作系统的死锁。原因是register参数是delphi的默认参数。
2.所写的函数和过程应该用exports语句声明为外部函数。
正如大家看到的,TestDll函数被声明为一个外部函数。这样做可以使该函数在外部就能看到,具体方法是单激鼠标右键用“快速查看(Quick View)”功能查看该DLL文件。(如果没有“快速查看”选项可以从Windows CD上安装。)TestDll函数会出现在Export Table栏中。另一个很充分的理由是,如果不这样声明,我们编写的函数将不能被调用,这是大家都不愿看到的。
[1] [2] [3] [4] [5] [6] [7] [8] 下一页
- 上一篇:流量计算机
《如何用Delphi编写dll文件》相关文章
- › 如何用Delphi编写dll文件
- 在百度中搜索相关文章:如何用Delphi编写dll文件
- 在谷歌中搜索相关文章:如何用Delphi编写dll文件
- 在soso中搜索相关文章:如何用Delphi编写dll文件
- 在搜狗中搜索相关文章:如何用Delphi编写dll文件