坑爹,二点半了,倒底是DLL有问题还是我写的方法有问题,求教。

lclwcf 2014-01-14 02:34:37
静态调用无伤何提示,也不报错。
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;
...全文
186 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ivvn 2014-01-15
  • 打赏
  • 举报
回复
dll 丢上来看一下  要么自己用IDA 看看 
xhz8000 2014-01-14
  • 打赏
  • 举报
回复
@MyRro:=GetProcAddress(MyHandle,PChar('mygo')); 修改为MyRro:=GetProcAddress(MyHandle,PChar('mygo'));
lclwcf 2014-01-14
  • 打赏
  • 举报
回复
谢谢楼上的,不是函数名的问题(procedure mygo(); cdecl; external 'my.dll'; ),我随手写的一个。 @MyRro:=GetProcAddress(MyHandle,PChar('mygo')); 我怕是我调动态链接库的方式写错了,这个DLL一共有三个文件,估计mydll还调用了其它的文件。 delphi调试器弹出内存窗口都是????这种问号。 我怀疑是DLL有问题。但是不知道怎么确认,谢谢指点
Oraclers 2014-01-14
  • 打赏
  • 举报
回复
你的函数名是:mygo还是my_go? @MyRro:=GetProcAddress(MyHandle,PChar('mygo'));

5,927

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧