请问如何向DLL中传递TDataModule

yaowz27 2013-09-04 04:52:22
有一个exe,包含一个TDataModule,TDataModule中包含数个DataSet,定义了一个TDataModule变量.
有一个dll,引用了这个DataModule的单元,并定义了一个TDataModule变量.输出了一个方法.
如下:

library DDPH;

uses
SysUtils,
Windows,
Form1 in 'Form1.pas' {Form1},
DBMain in '..\DBMain.pas' {DataMain: TDataModule};

procedure SetDBMain(ADBMain: TDBMain); stdcall;
begin
Form1.DBMain := ADBMain;
end;

exports
SetDBMain;
begin
end;

之后在exe中动态调用这个DLL,并执行SetDBMain这个方法,参数为Exe中已经实例化的DataModule变量.
问题是:
当我在DLL中使用这个DataModule中的DataSet时,有时正确,有时会提示内存溢出的错误,有时连提示都没有,直接退出程序.
我想知道为什么会出现这样的问题,为什么是好是坏,我应该怎么做才是正确的?
...全文
168 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yaowz27 2013-09-09
  • 打赏
  • 举报
回复
原因是没有加上ShareMem... 我一直以为只有字符串和返回值才需要.
董董 2013-09-05
  • 打赏
  • 举报
回复
你的dll不可能被其他语言程序所调用,所以用bpl包代替dll。
s11ss 2013-09-05
  • 打赏
  • 举报
回复
procedure SetDBMain(AForm1: TForm1; ADBMain: TDBMain); stdcall; begin AForm1.DBMain := ADBMain; end;
yaowz27 2013-09-05
  • 打赏
  • 举报
回复
顶一下,求救啊
yaowz27 2013-09-04
  • 打赏
  • 举报
回复
顶一下,求救啊

5,378

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧