delphi 调用dll两种方式
来源:互联网 发布:java web图书管理系统 编辑:程序博客网 时间:2024/04/29 11:10
<1>外部声明
在Delphi中外部声明是访问外部例程最容易和最常用的方式,有两种声明方式:通过名字、通过索引号。举例如下:在MYDLL.DLL中有两个函数和一个过程,则其外部声明可以写成:
function test1:integer;external 'mydll';
//直接通过名称调用test1(注意名称大小写敏感)。
function test11:integer;external 'mydll' name 'test1';
//通过名称调用test1,在程序中使用新名称(原名称仍然大小写敏感)。
procedure test2;external 'mydll' index 1;
//通过索引号调用TEST2。程序中可以用与DLL中不一样的名称.
在Delphi中外部声明是访问外部例程最容易和最常用的方式,有两种声明方式:通过名字、通过索引号。举例如下:在MYDLL.DLL中有两个函数和一个过程,则其外部声明可以写成:
function test1:integer;external 'mydll';
//直接通过名称调用test1(注意名称大小写敏感)。
function test11:integer;external 'mydll' name 'test1';
//通过名称调用test1,在程序中使用新名称(原名称仍然大小写敏感)。
procedure test2;external 'mydll' index 1;
//通过索引号调用TEST2。程序中可以用与DLL中不一样的名称.
使用外部声明的缺点是程序启动时如果找不到mydll.dll将无法运行,即使没有调用其中的模块。 动态加载的方法可以避免这种情况。
<2>动态加载
通过调用Windows API中的相关函数,将DLL调入内存并获得指向函数或过程的指针,执行完模块后释放内存。除了节约内存外,这种方法的一个很大的优点是能处理找不到dll或者在装入过程中出错的情况。这样即使某个dll有问题,应用程序的其他部分仍然能够正常运行。动态加载的例子如下:
var hDll:THandle;
Test1:function:integer;
begin
hDll:=LoadLibrary('mydll.dll');
if hDll<32 then exit;//如果Dll无法加载则跳出
@Test1:=GetProcAddress(hDll,MakeIntResource(1));
//取得mydll中的第一个函数的地址。
...
FreeLibrary(hDll);
end;
http://www.cnblogs.com/s-Yang/p/delphi_DLL.html
- delphi dll的两种调用方式
- delphi 调用dll两种方式
- Delphi中DLL两种调用方式的比较
- Java调用Delphi DLL(通过C++调用和直接调用两种方式)
- dll的两种调用方式
- dll的两种调用方式,lib与dll区别
- C#调用Delphi的dll的两种方法
- C#调用C++ DLL动态库的两种方式
- 两种DLL注入方式
- delphi dll 调用技巧
- delphi 调用dll窗体
- VC调用DELPHI DLL
- delphi 调用 dll
- delphi调用DLL
- delphi调用.net dll
- delphi 动态调用DLL
- Delphi调用Dll
- Delphi 调用Dll
- gethibernatetemplate find条件查询方法
- Reading Plan
- SIFT之二:获取精确特征点位置
- 在数据库各种状态下查询DBID的五大类十种方法汇总
- 统计-5 事件关系
- delphi 调用dll两种方式
- rqnoj-396-SY学语文-dp
- 使用Clang编译安装ActiveMQ-cpp
- 初识Qt遇到的问题
- 《UNIX环境高级编程》笔记--解释器文件
- mipsel-linux-uclibc交叉编译opus
- main函数的原型
- Henry捡钱 Java 动态规划
- 再来一种求大数阶乘的方法