比如我定义了一个这样的函数指针
type
TFunction = function(a,b:Integer);Bool;stdcall;
然后有个动态链接库的exports函数是
function Entry(a:Integer;var Entry:TFunction)
{
a:=100;
Entry:=@F100
}
其中F100的定义和TFunction是一样的。现在的比如我通过dll调用获得了Entry地址
@Entry=GetProcAddress(Address,'Entry');
获得地址后调用Entry
Entry(num;XXX);这个XXX的地方该写什么?如果只是单纯地声明XXX:TFunction的话编译是没有错误的,走到这里就会报写地址错误。
type
TFunction = function(a,b:Integer);Bool;stdcall;
然后有个动态链接库的exports函数是
function Entry(a:Integer;var Entry:TFunction)
{
a:=100;
Entry:=@F100
}
其中F100的定义和TFunction是一样的。现在的比如我通过dll调用获得了Entry地址
@Entry=GetProcAddress(Address,'Entry');
获得地址后调用Entry
Entry(num;XXX);这个XXX的地方该写什么?如果只是单纯地声明XXX:TFunction的话编译是没有错误的,走到这里就会报写地址错误。
解决方案 »
- 怎么把Image的bmp图片赋给DBImage?
- 有经验的高手请进:midas,scktsrvr,TSocketConnection之间恼火的问题怎么这么多
- 窗体上有image作为背景,然后formpaint事件中在窗体上画线,线被窗体遮住,看不到,怎么办??
- 大家看看clientdataset的问题.
- 关于Oracle数据库的问题!急!
- 如何把一个listbox中的值全部取出,如何添加值?
- 关于paintbox控件
- 怎么用DELPHI实现RS232串口通讯实现一次发送九位信息?谢谢,急急急!
- 请问高手,我用sakemail里的stmp的例子发E时,提示没有认证,请问怎样设置其中的参数?谢谢
- txinfo(冰炎两重天),谢谢你的图,送分
- tif文件的操作
- 关于“授权”客户端的使用策略方法
function abc(const a, b: Integer): Integer;
begin
result := CompareValue(a, b);
end;function Test(var Fun: Pointer): Boolean; stdcall;
begin
Fun := @abc;
end;exports
Test;
//测试动态库代码type
TFun1 = function(var Fun: Pointer): Boolean; StdCall;
TFun2 = function(const a, b: Integer): Integer;var
LibHandle: THandle;
lf_Fun1: TFun1;
lf_Fun2: TFun2;
begin
try
LibHandle := LoadLibrary('Project2.dll');
if LibHandle = 0 then exit;
@lf_Fun1 := GetProcAddress(LibHandle, 'Test');
lf_Fun1(@lf_Fun2);
ShowMessage(IntToStr(lf_Fun2(2, 2)))
finally
FreeLibrary(LibHandle);
end;
end;