我在编译下面语句是出现错误:
procedure TForm1.Button2Click(Sender: TObject);
var hh:TFarProc;
Moudle: THandle;
begin
moudle:=loadlibrary('mydll.dll');
hh:=getprocaddress(moudle,'funb');
hh('xxxx'); //error
freelibrary(moudle);
end;
错误提示:missing operator or semicolon
可我怎么也查不出来。拜托各位了。我的mydll.dll里这样定义:
procedure funb(m:pchar);export;stdcall;
begin
showmessage(m);
end;
procedure TForm1.Button2Click(Sender: TObject);
var hh:TFarProc;
Moudle: THandle;
begin
moudle:=loadlibrary('mydll.dll');
hh:=getprocaddress(moudle,'funb');
hh('xxxx'); //error
freelibrary(moudle);
end;
错误提示:missing operator or semicolon
可我怎么也查不出来。拜托各位了。我的mydll.dll里这样定义:
procedure funb(m:pchar);export;stdcall;
begin
showmessage(m);
end;
解决方案 »
- 为何winexec('tpc 1.pas>1.log',sw_normal)在win98下不能编译而在XP则可以?
- 我有多行数据,想用quickreport分列打印,不用数据库,怎么实现
- 随机数
- 谁能形象,详细的更我说说TRY...FINALLY的作用呢
- 100分求角度
- delphi中怎样对查询出来的数据进行二次查询?
- 类似showmessage()的带惊叹号的警告窗口是show???????呀?
- 用什么方法备份文件最好!
- 这个checkbox有点讨厌。
- 谁有兴趣做DELPHI+CORBA的请进
- delphi7中怎么没有QuickReport报表控件,怎么安装QuickReport报表控件?
- 急!请问如何屏蔽代号为10053的错误
var hh:TFarProc;
Moudle: THandle;
begin
moudle:=loadlibrary('mydll.dll');
hh:=getprocaddress(moudle,'funb');
Tproc(hh)('xxxx'); //error现在export已经不用了,是用在16位上的,你去掉好了
freelibrary(moudle);
end;
FARPROC GetProcAddress(
HMODULE hModule, // handle to DLL module
LPCSTR lpProcName // function name
);
返回DLL中函数的地址。相应的你也要定义一个与该函数变量(类型和DLL中的函数相同)。然后通过赋值得到函数内容。type
//定义函数类型
TXXXX = function(XXX: Integer): Integer <----我假设你DLL中函数的原形是这样的。
var
//申明变量
XXXX: TXXXX;@XXXX = GetProcAddress(hModule, lpProcName); <----得到函数地址
使用方法:
var
I: Integer;
begin
I := XXXX(1234);
end;