dll的动态调用,释放出错??? ( 积分: 100 )

  • 主题发起人 主题发起人 Sewim
  • 开始时间 开始时间
S

Sewim

Unregistered / Unconfirmed
GUEST, unregistred user!
我编写出的DLL,动态调用时,释放的时候出错,请大家帮忙看看,谢谢
这是调用部分:
procedure TForm1.Button1Click(Sender: TObject);
type
tGetmac = function: string;
var
Getmac: tGetmac;
LibHandle: tHandle;
begin
try
LibHandle := LoadLibrary('GetSystemIDM.dll');
if LibHandle = HINSTANCE_ERROR then exit;
@Getmac := GetProcAddress(LibHandle, 'Getmac');
if @Getmac <> nil then
showmessage(Getmac);
finally
FreeLibrary(LibHandle);
end;
end;

这是DLL源代码:
library GetSystemIDM;

uses
SysUtils,
Classes,
StrUtils,
nb30, windows;

{$R *.res}

function Getmac: string;
begin
Getmac := 'ok';
end;
exports
Getmac ;

begin
end.
 
library GetSystemIDM;

uses
Sharemem, //注意这里家的单元 , 同时在你的调用工程单元程序的里面也加上这个. 是加在第一个位置上
SysUtils,
Classes,
StrUtils,
nb30, windows;

{$R *.res}

function Getmac: string;
begin
Getmac := 'ok';
end;
exports
Getmac ;

begin
end.
 
谢谢,不过我发现是返回的类型有问题,我使用string类型就会出错,其它类型就没问题.
但我要的是一个字符串,这个问题该如何解决????
 
是的是类型问题! Sring 是delphi 专用的. PChar 就可以啊
 
是的,我现在改用Pchar了,谢谢,现在问题已经解决
 
接受答案了.
 

Similar threads

I
回复
0
查看
514
import
I
I
回复
0
查看
454
import
I
I
回复
0
查看
531
import
I
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部