var
DllApp:TApplication;
//创建主窗口
function CreateMainForm:Integer;stdcall;
begin
try
frmMain := TfrmMain.Create(DllApp);
frmMain.Show;
Result := 0;
except
Result := -1;
frmMain.Free;
end;
end;
//这里一执行完就报内存错误,但是窗口照样显示。
//函数输出列表
exports
CreateMainForm;begin
DllApp := Application;
end.
DllApp:TApplication;
//创建主窗口
function CreateMainForm:Integer;stdcall;
begin
try
frmMain := TfrmMain.Create(DllApp);
frmMain.Show;
Result := 0;
except
Result := -1;
frmMain.Free;
end;
end;
//这里一执行完就报内存错误,但是窗口照样显示。
//函数输出列表
exports
CreateMainForm;begin
DllApp := Application;
end.
要重写DLLPROC指向的过程……
网上有很多这样的例子,自己找找吧!
function CreateMainForm: Integer; stdcall; external 'testdll.dll';大概是因为 DLL 中的 Application 未正确初始化造成。三个方法(三者选一或三者全有):
1、将EXE和DLL都做成需要Runtime Package的,Project Options | Packages | Build with Runtime Packages,确保VCL的核心包都在了;
2、在调用CreateMainForm之前想办法把
3、你把DllApp做成CreateMainForm的参数吧,从EXE中传入,做为该FORM的Owner。另外,错误信息是什么?好多人不写错误信息,纳闷……
--
http://www.agui.googlepages.com
mailto: agui.cn @ gmail.com