我曾用以下方法调用 dll 中的函数,程序可以运行:PFunc: TFarProc;...OneHandle := LoadLibrary('test.dll'); //动态载入DLL,并返回其句柄
Pfunc := TFarProc(GetProcAddress(Onehandle,'Instr'));
Pfunc('hello !');后来看到好像这是正规用法(还没用):PFunc: TFarProc;...OneHandle := LoadLibrary('test.dll'); //动态载入DLL,并返回其句柄
@Pfunc := TFarProc(GetProcAddress(Onehandle,'Instr'));
Pfunc('hello !');到底那种方法正确,能解释一下吗?
Pfunc := TFarProc(GetProcAddress(Onehandle,'Instr'));
Pfunc('hello !');后来看到好像这是正规用法(还没用):PFunc: TFarProc;...OneHandle := LoadLibrary('test.dll'); //动态载入DLL,并返回其句柄
@Pfunc := TFarProc(GetProcAddress(Onehandle,'Instr'));
Pfunc('hello !');到底那种方法正确,能解释一下吗?
@Pfunc := GetProcAddress(Onehandle,'Instr');
Pfunc('hello !');
第一个使用TFarProc强制转换为函数指针。
第二个省掉使用强制转换。GetProcAddress返回函数的地址。
...而不能这样用:if (PFunc<>nil) then
...
@PFunc表示指针只向内容申请一个指针的时候,就有了一个数值(DWORD类型)。
只有指针指向的内容<>nil,才说明GetProcAddress成功。