如何在Delphi中,调用用VC++编译的Dll文件中的函数。最好能举个例子,谢谢。(100分)

  • 主题发起人 主题发起人 AiBoo
  • 开始时间 开始时间
A

AiBoo

Unregistered / Unconfirmed
GUEST, unregistred user!
如何在Delphi中,调用用VC++编译的Dll文件中的函数。最好能举个例子,谢谢。
 
调用Dll有两种方式:动态调用和静态调用:
动态调用:
1.用loadlibrary调用Dll模块
2.用GetProcAddress取得函数地址,然后付得定义好的函数指针
3.执行函数
4.用Freelibrary释放
静态调用:
1.声明函数原形(要注意该函数的调用方式,是STDCALL,还是CDECL方式)
2 写函数实体时用External指明函数地址即可
例:
原形
function OpenProcess(dwDesiredAccess: DWORD;
bInheritHandle: BOOL;
dwProcessId: DWORD): THandle;
stdcall;
........
实体
function OpenProcess;
external 'kernel32.dll' name 'OpenProcess';
 
如果是VC++的声明方式,函数名会有变化,和参数有关。
 
jsxjd,能详细讲一下吗?
 
在vc++下
函数声明为 stdcall EXPORT
如: int stdcall EXPORT hello(int para);
然后添加def文件
LIBRARY "mydll"
DESCRIPTION 'mydll Windows Dynamic Link Library'
EXPORTS
;
Explicit exports can go here
hello
在delphi中如下声明:
Function hello:integer;
STDCALL;
external 'mydll.dll';
 
后退
顶部