菜鸟关于调用一个dll.(50分)

  • 主题发起人 主题发起人 net77
  • 开始时间 开始时间
N

net77

Unregistered / Unconfirmed
GUEST, unregistred user!
dll源码:
library ProjectDll;

uses
SysUtils,
Classes;

{$R *.res}
function nn(n:integer):integer;stdcall;
var i:integer;
begin
result:=1;
for i:=1 to n do result:=result*i;
end;
exports
nn;
begin
end.

调用程序源码:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}
function nn(n:integer):integer;stdcall;
external 'Projectdll.dll';

procedure TForm1.Button1Click(Sender: TObject);
begin
Edit2.Text:=inttostr(nn(strtoint(edit1.Text)));
end;

end.

为什么F9运行时不能运行,马上回到编辑状态,不能出现正常的运行后的Form。
我已经把dll文件拷到这个调用程序的文件夹下了。
我用的delphi7
 
dll和exe 是在同一目录下吗?
 
你需要另外编一个应用程序来调用它!
 
需要两个工程,一个dll工程,一个exe工程
 
这种情况一般都是DLL原码有问题
我一会帮你看下
 
问题的最大可能在于你没有保存DLL工程,所以导致你引用的DLL文件并不存在
或者你的EXE工程没有保存,所以导致你COPY的DLL文件和你的EXE工程并不在同一个目录里
 
当然了,你的阶乘函数还有很大的BUG
 
直接运行exe文件呢(不在调试状态下运行)
 
直接运行exe就没有反应。。。。。。。
 
我是照着网上的一个例子自己做的。。。。。
 
dll文件我拷到调用程序所在的文件夹下了。也已经生成exe文件了啊。
 
来人帮忙。。。。
 
为什么运行没反应呢??
 
没问题啊
我在d6下可以运行的啊。。。。
估计电脑有问题。。。。。
 
后退
顶部