调用DLL错误

Rich_Zhou 2004-04-23 11:25:46
调用DLL错误,在调试环境下,退出程序时出现非法地址错误。
function Quit(WHandle: HWND): Integer; stdcall;
function Quit; external 'STK.DLL' Name 'Quit';
无论用Register,PASCAL,Stdcall,Cdecl,Safecall那种调用约定模式都无法解决问题,
无论是否执行只要定义了这一DLL引用就出现错误。
...全文
48 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ttch 2004-04-24
  • 打赏
  • 举报
回复
用DLL错误,在调试环境下,退出程序时出现非法地址错误。
function Quit(WHandle: HWND): Integer; stdcall;
function Quit; external 'STK.DLL' Name 'Quit';
无论用Register,PASCAL,Stdcall,Cdecl,Safecall那种调用约定模式都无法解决问题,
无论是否执行只要定义了这一DLL引用就出现错误。

==============================================================

请保证您的参数和使用的函数指针参数一致,并且采用一致的参数调用方式.

其他的就没什么了

比如
{这是你的代码}
function Quit(WHandle: HWND): Integer; stdcall;
function Quit; external 'STK.DLL' Name 'Quit';//这个有编译时错误和运行时错误两种.

他返回类型没有定义,而且函数没有参数? 正确的调用方式是这样的
function Quit(WHandle: HWND): Integer; stdcall;
function Quit(WHandle: HWND): Integer; external 'STK.DLL' Name 'Quit';stdcall;
或者用动态的
TDllType = function(WHandle: HWND):integer;stdcall;

function test:integer;
var
testfunc:TDllType;
begin
@TestFunc:=GetProcAddress(DllHandle,'Quit');
if @TestFunc<>0 then
Result:=TestFunc(Form1.Handel);
end;
visual_cjiajia 2004-04-24
  • 打赏
  • 举报
回复
Cipherliu(孤鹰) 大哥休正后帖子 给大家学习!谢谢!
Cipherliu 2004-04-24
  • 打赏
  • 举报
回复
cipherliu@sohu.com
Cipherliu 2004-04-24
  • 打赏
  • 举报
回复
把你的源码发给我,我帮你看看
Cipherliu 2004-04-24
  • 打赏
  • 举报
回复
把你的源码发给我,
Cipherliu 2004-04-24
  • 打赏
  • 举报
回复
如果参数中有string或动态数组,就一定要按楼上所说的uses ShareMem,否则你还是查一下其它原因
soaringsouth 2004-04-24
  • 打赏
  • 举报
回复
在工程和调用dll的单元的uses的第一位置加上sharemem
再者,注意参数的一致性
Rich_Zhou 2004-04-24
  • 打赏
  • 举报
回复
Cipherliu(孤鹰):
代码不太方便发给你,你有QQ或者MSN吗?我们联系
QQ:342193458
MSN:rich_zhou@yeah.net
visual_cjiajia 2004-04-24
  • 打赏
  • 举报
回复
DLL是你自己写的不
如果是 那么DLL本身就有问题 偶昨天刚处理 最终都能搞定
Rich_Zhou 2004-04-24
  • 打赏
  • 举报
回复
几种方法都试过了,解决不了
tfafei 2004-04-23
  • 打赏
  • 举报
回复
没法帮你解决,只有帮你UP!UP!!UP!!!

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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