Delphi静态调用C的动态库(50分)

  • 主题发起人 主题发起人 qyfei
  • 开始时间 开始时间
Q

qyfei

Unregistered / Unconfirmed
GUEST, unregistred user!
我有一个C的动态库Ic_dll.dll,里面有一个函数是:
bool GetNextK(int MachNo,char *Result);
Result:一个长度为22的字符数据组,返回结果存在此数据组中
请问我在Delphi中怎样静态调用这个函数,谢谢
 
function GetNextK(MacNo:integer; _Result : PChar):Boolean; cdecl; external 'Ic_dll.dll';

调用约定也可能不是cdecl而是stdcall等,因为C的函数约定可能在DEF文件中做了声明.如果没有在DEF文件中声明成其他约定的话就用cdecl
 
谢谢楼上的,那如果是动态调用的话怎么样声明,二种调用方法有什么区别?
 
var
GetNextK : function (MacNo:integer; _Result : PChar):Boolean; cdecl;
hDLL : DWORD;
R : array[0..1024] of char;
begin
//....
hDLL := LoadLibrary('Ic_dll.dll');
GetNextK := GetProcAddress(hDLL,'GetNextK');
GetNextK(0,@R);
end;
 
静态 的 ,是在 固定 装载,
动态可以 实现 插件 什么的,
并且显式 loadlibrary ,free 的话是立即的
否则是由windows去决定.
 
多人接受答案了。
 
后退
顶部