Dll传递TApplication类,关闭程序时越界 找管家婆
procedure pLoadLang(var App: TApplication); stdcall;
在调用时,使用
App := application;
pLoadLang(App);
但是在关闭程序时,报错。
2楼: procedure pLoadLang(const AppWnd: THandle); stdcall;
begin
Application.Handle := AppWnd;
.......
end;
调用:
pLoadLang(Application.Handle); 如管家婆
3楼: 在释放的时候可能造成了Application的重复释放
在Dll的工程文件中加上这个
implementation
procedure ExitDLL(Reason: Integer);
begin
if Reason = DLL_PROCESS_DETACH then
begin
Application := DLLApp;
end;
end;
initialization
DLLAPP := Application;
DLLProc := @ExitDLL;
end.
4楼: to :风林坡
我在调用的时候,handle传入的时候报错,为什么要申明为const呢
to:iamy
你的那段是加在dll里面吗,不知道加在那,加了以后我的编译就过不了了,好象是说找不到该函数的定义,我的所有函数和过程都报错了。
5楼: 类对象不能传给外部DLL!
你应该实用句柄来传递,就照“风林坡”说的来做就可以了!
6楼: 加在Dll的工程文件里
procedure ExitDLL(Reason: Integer);
begin
if Reason = DLL_PROCESS_DETACH then
begin
Application := DLLApp;
end;
end;
initialization
DLLAPP := Application;
DLLProc := @ExitDLL;
主要是这一端
记账软件版7楼: 当然你可以不用声明为const
8楼: 多人接受答案了。