靜態呼叫無傷何提示,也不報錯。
procedure my_go(); cdecl; external 'my.dll';
動態呼叫,彈錯誤,運行到MyRro();時彈出(access violation at 0x10113903:read of address 0x10113903),不知道是什么問題,謝謝幫忙 。
type
TMyPro=procedure();cdecl;
var
MyHandle:Thandle;
MyRro:TMyPro;
begin
try
MyHandle:=LoadLibrary('my.dll');
if MyHandle>0 then ///大于0為DLL裝載成功
try
@MyRro:=GetProcAddress(MyHandle,PChar('mygo'));
if @MyRro<>nil then
begin
MyRro();
end
else
ShowMessage(mygo函式沒有找到');
finally
FreeLibrary(MyHandle);
end
else
ShowMessage(my.dll沒有找到');
except
end;
end;
uj5u.com熱心網友回復:
你的函式名是:mygo還是my_go?@MyRro:=GetProcAddress(MyHandle,PChar('mygo'));
uj5u.com熱心網友回復:
謝謝樓上的,不是函式名的問題(procedure mygo(); cdecl; external 'my.dll';),我隨手寫的一個。
@MyRro:=GetProcAddress(MyHandle,PChar('mygo'));
我怕是我調元件的方式寫錯了,這個DLL一共有三個檔案,估計mydll還呼叫了其它的檔案。
delphi除錯器彈出記憶體視窗都是????這種問號。
我懷疑是DLL有問題。但是不知道怎么確認,謝謝指點
uj5u.com熱心網友回復:
@MyRro:=GetProcAddress(MyHandle,PChar('mygo'));修改為MyRro:=GetProcAddress(MyHandle,PChar('mygo'));
uj5u.com熱心網友回復:
dll 丟上來看一下要么自己用IDA 看看
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/118792.html
標籤:VCL組件開發及應用
