为什么找不到DLL?(50分)

  • 主题发起人 主题发起人 heilongma
  • 开始时间 开始时间
H

heilongma

Unregistered / Unconfirmed
GUEST, unregistred user!
为什么找不到DLL?
根据提示的路径,有所要找的DLL文件,而实际执行过程中,总是提示找不到!为什么?
初学动态连接库,按部就班,DLL已经顺利生成,可是调用的时候,出现以上错误!请指教
 
DLL文件名和扩展名是有区分大小写的,请注意大小写……
 
1。大小写问题!
2。没注册!
3。还不行则找本书看看!!
 
需要对Dll进行注册;具体方法:
; RegSvr32 + *.Dll
 
文件名没问题,扩展名也要区分大小写吗?如果区分,程序中也没有涉及到啊.属性上都是小写.
很简单,不需要注册吧!这是代码!
library mydll;
uses
; SysUtils,
; Classes,
; Unit1 in 'Unit1.pas';

{$R *.RES}
function Test1(a,b:integer):integer ;
begin
Result:=a+b;
end;
exports
Test1 index 1;
begin
end.
这是调用代码
unit Unit1;

interface

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

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

var
; Form1: TForm1;

implementation
;function Test1(a,b:integer):integer;external 'mydll';
{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
;form1.caption:='1+2='+inttostr(Test1(1,2));
end;

end.
 
请加上stdcall;还有,加上扩展名.dll,并且区分大小写。
在dll中要function Test1(a,b:integer):integer ;stdcall;
调用中也要function Test1(a,b:integer):integer ;stdcall; external 'mydll.dll';
 
此Dll文件在系统的搜索路径中吗?
 
叶大侠:修改后如下可还是有问题!报错内容为:无法找到入口;无法定位程序输入点Test1于动态连接库mydll.dll上
调用代码

unit Unit1;
interface

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

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

var
; Form1: TForm1;

implementation
;function Test1(a,b:integer):integer ;stdcall; external 'mydll.dll' ;//此处

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
;form1.caption:='1+2='+inttostr(Test1(1,2));

end;

end.
DLL ;部分
library mydll;
uses
; SysUtils,
; Classes,
; Unit1 in 'Unit1.pas';

{$R *.RES}
;function Test1(a,b:integer):integer ;stdcall;//此处

begin
Result:=a+b;
end;
exports
Test1 index 1;
begin
end.
;
 
我用你的代码调试得好好得啊!
你那个dll中的Unit1 in 'Unit1.pas';是做什么的,没用就去掉。
还有,external 'd:/mydll.dll';如果不是当前目录或系统目录,要加上路径。
; ; ; ; ; ; ; ;^^^^^
 
成功了!谢过!
 

Similar threads

后退
顶部