下面的代码是调用c写的dll,但是怎么竟然编译出错,哪位大侠出手相助?
解决方案 »
- 一道图片的缩放题目,算来算去好像都不对
- ODAC控件没有类似ADO的SORT方法吗?
- 用findfirst查找文件后,无法用loadfromfile打开找到的文件,提示cannot open....
- 库存信息表是放在物料信息表中还是单独建一新表好?
- 可以在delphi程序中实现sql server数据库的备份与恢复吗?
- 如何把一个word文本转换成一副图片?
- Net Configuration Assistant 配置的问题!
- 熟悉Formula One 的高手请进!!!
- 关于如何使用datatimepicker和monthcalendar的问题,up有分
- 各位大哥!小弟刚学DELPHI请教几个关于网络小问题嘛!!大量给分!
- 初学者的非常菜的问题,很急!!!!!!!!!
- copy函数
unit dlltest;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;type TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
Function add(var1,var2:integer):integer;stdcall;
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation
Const DllName='d:\work\develop\dlltest_delphi\add.dll';
function add;external DllName; {$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
res:integer;
begin
res:= add(1,2);
end;end.
eg :
function add :integer;external DllName;
type TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
Function add(var1,var2:integer):integer;stdcall;//就是这句编译出错,奇怪!
private编译错误为:
66. Unsatisfied forward or external declaration: '<Procedurename>'但是我只是声明一下又为什么去外部找?
不能放在这里要在IMPL。下面,老大,注意调用 STDCALL CDECLEL啊???
老大
因为你没有定义这个函数的执行体
或是在本单元或是外单元包进来
你的意思是DLL中的
就必须加上external "name.dll"
才行
谢谢。[email protected] oicq:197575
// 错误的做法
type
TForm1 = class(TForm)
Function add(var1,var2:integer):integer;stdcall;
private
..
end;
//正确的做法
type
TForm1 = class(TForm)
private
..
end;
Function add(var1,var2:integer):integer;stdcall;
implementation
function add; external "Mydll.Name" //name "add"