调用DLL文件的问题?急!!!(200分)

  • 主题发起人 主题发起人 网上小兵
  • 开始时间 开始时间

网上小兵

Unregistered / Unconfirmed
GUEST, unregistred user!
本菜鸟最近在学习delphi的动态链接库编程,按照天极网上一篇文章编写如下代码:<br>其中DLL的程序代码如下:<br>library AddNum;<br>uses<br>SysUtils,<br>Classes;<br><br>{$R *.res}<br><br>function AddNumber(Num1,Num2:integer):integer;stdcall; //定义求和函数<br> begin<br>  result:=Num1+Num2;<br> end;<br>  exports<br>  AddNumber; //引出求和函数<br> begin<br>end. <br><br>主程序主要部分如下:<br>主程序在调用该DLL时,首先在interface部分声明要调用的函数:<br><br>function AddNum(Num1,Num2:integer):integer;stdcall;external 'AddNum.dll'<br>name 'AddNumber'; &nbsp;<br><br>  然后在按钮控件的事件中写入如下代码:<br><br>procedure TForm1.Button1Click(Sender: TObject);<br>var<br> Number1,Number2:integer; <br> Sum:integer;<br>begin<br> Number1:=strtoint(Edit1.Text);<br> Number2:=strtoint(Edit2.Text);<br> Sum:=AddNum(Number1,Number2); //调用求和函数计算结果<br> Edit3.Text:=inttostr(Sum);<br>end; <br><br>执行主程序,缺显示如下错误信息:<br>d:/borland/program/wsm/addnum.dll 文件已损坏,请重新安装此文件,然后再试一次。<br>(dddnum.dll和主程序都放在d:/borland/program/wsm目录中。)<br>本菜鸟根据其他教程编写的几个静态调用DLL实例,也显示如上的错误信息。<br>(后来发现我将dll存为addnum.dll,但在delphi中打开dll文件时缺没列出addnum.dll<br>文件,不知是否与上面的错误有关系。)<br>请问各位大侠这是什么原因,该如何解决?
 
我记得以前有过这个问题的。<br><br>我在WIN ME + DELPHI5 下调试通过。建议你换台机子试试看。
 
在implementtation中声明函数看看,不知道和在interfere 中声明有什么不同!
 
我在PWIN98+DELPHI5中没发现这个问题,你的环境是什么?
 
将所有接口以及动态库全部改成为大写的,调用也全部用大写的。<br>实验一下,一般不应该呀。。。
 
你的dll注册了吗?<br>这种问题不该出现啊。
 
莫非是中毒了
 
动态调用一把啊。
 
你的DLL代码中函数后面怎末只有stdcall没有export啊?<br>加上试试!?是这样:<br>function AAA;stdcall;export;<br>begin<br>end;<br><br>exports<br>&nbsp; AAA;
 
不看不知道,一看可不真是!那为什么后来能成呢?[:D]<br>export AddNumber;
 
建议找一个现成的例子模仿一下,看是否也存在这样的问题,然后再作定论。
 
后退
顶部