看一下下面的代码。。Tgetn=function:pchar;stdcall; var Form1: TForm1; implementation procedure TForm1.SpeedButton1Click(Sender: TObject); var onehandle:Thandle; fun:Tgetn; begin onehandle:=loadlibrary('getname.dll'); try if onehandle<>0 then @fun:=getprocaddress(onehandle,'getnames'); if not(@fun=nil)then label1.Caption:=fun ; finally freelibrary(onehandle); end; end;
TXXX =Function (xx:string):Integer;stdcall;var
FHandle:THandle;
begin
FHandle:=LoadLibrary('c:\yourdll.dll'));
.....
end;
程序调用dlla时要指路径
dlla调用dllb时也要指路径
另外像
LoadLibrary('c:\yourdll.dll'))这样的函数,参数用PChar转换下类型看看.
看一下下面的代码。。Tgetn=function:pchar;stdcall;
var
Form1: TForm1;
implementation
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
onehandle:Thandle;
fun:Tgetn;
begin
onehandle:=loadlibrary('getname.dll');
try
if onehandle<>0 then
@fun:=getprocaddress(onehandle,'getnames');
if not(@fun=nil)then
label1.Caption:=fun ;
finally
freelibrary(onehandle);
end;
end;
type
TGetT = function(c: integer): ShortString; stdcall;
var
GetT: TGetT;
AHandle: THandle;
begin
AHandle:= LoadLibrary('DLib\Dlnk.dll'); // <- 相对路径,没问题. D:\Project\DLib\Dlnk.dll 也没问题
GetT:= GetProcAddress(AHandle,'GetT');
Application.Title:= GetT(1);
.....
FreeLibrary(AHandle);
end;
end;
2.方法二:添加路径到path当中,我的电脑->属性->高级>环境变量->找到path部分,添加即可