请教怎么向DLL中传递TDataModule

请问如何向DLL中传递TDataModule
有一个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时,有时正确,有时会提示内存溢出的错误,有时连提示都没有,直接退出程序.
我想知道为什么会出现这样的问题,为什么是好是坏,我应该怎么做才是正确的?
delphi 内存溢出 dataset 实例 DataModule

------解决方案--------------------
procedure SetDBMain(AForm1: TForm1; ADBMain: TDBMain); stdcall;
begin
  AForm1.DBMain := ADBMain;
end;
------解决方案--------------------
你的dll不可能被其他语言程序所调用,所以用bpl包代替dll。