unsigned 和各位大虾..上一帖子 http://topic.csdn.net/u/20090330/13/6f95befc-e2ff-45eb-b5eb-6f7db7a9ac32.html
已经解决了在程序中通过调用封装在dll中的类(使用接口来实现的)的问题,感谢unsigned..在本机调试正常,调用DLL也很正常。
但在没有安装delphi的PC上运行程序则出现 Exception exception in module 'UserInfoDLL.dll'的错误..始终不得其解,来问问各位是什么回事情。把代码放在http://download.csdn.net/source/1171701. 这里,希望各位帮帮我,这个是简单的测试代码.
如果没有安装fastMM,则请将两个工程代码的uses fastmm 都改为 shareMem.谢谢各位.调用dll的单元文件代码uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, DB, DBClient,
IuserInfo, StdCtrls;type
TmyFunction=function:IuserInfoLib; //声明一个函数类型 TForm1 = class(TForm)
ClientDataSet1: TClientDataSet;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
UserLib:TmyFunction;
myHandle:Thandle; //dll句柄
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
myHandle:=LoadLibrary('UserInfoDLL.dll'); //载入DLL
@UserLib:=GetProcAddress(myHandle,'CreateUserInfoLib');//获取到DLL中的函数
end;procedure TForm1.FormDestroy(Sender: TObject);
begin
UserLib:=nil;
freeLibrary(myHandle); //释放
end;
//点击获取全部用户信息
procedure TForm1.Button1Click(Sender: TObject);
begin
if Assigned(UserLib) then
clientDataset1.Data:=UserLib.GetUserInfo; //获取全部的用户信息end;
已经解决了在程序中通过调用封装在dll中的类(使用接口来实现的)的问题,感谢unsigned..在本机调试正常,调用DLL也很正常。
但在没有安装delphi的PC上运行程序则出现 Exception exception in module 'UserInfoDLL.dll'的错误..始终不得其解,来问问各位是什么回事情。把代码放在http://download.csdn.net/source/1171701. 这里,希望各位帮帮我,这个是简单的测试代码.
如果没有安装fastMM,则请将两个工程代码的uses fastmm 都改为 shareMem.谢谢各位.调用dll的单元文件代码uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, DB, DBClient,
IuserInfo, StdCtrls;type
TmyFunction=function:IuserInfoLib; //声明一个函数类型 TForm1 = class(TForm)
ClientDataSet1: TClientDataSet;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
UserLib:TmyFunction;
myHandle:Thandle; //dll句柄
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
myHandle:=LoadLibrary('UserInfoDLL.dll'); //载入DLL
@UserLib:=GetProcAddress(myHandle,'CreateUserInfoLib');//获取到DLL中的函数
end;procedure TForm1.FormDestroy(Sender: TObject);
begin
UserLib:=nil;
freeLibrary(myHandle); //释放
end;
//点击获取全部用户信息
procedure TForm1.Button1Click(Sender: TObject);
begin
if Assigned(UserLib) then
clientDataset1.Data:=UserLib.GetUserInfo; //获取全部的用户信息end;
看来要多了解Delphi的多层架构的开发知识..
看来要多了解Delphi的多层架构的开发知识..
这个我刚也搜索到了这样每个单元都要引用,似乎会增加文件的大小,我多个DLL 的话都引用每个都回增大..还是可以单独调用好点.