Dll传递TApplication类,关闭程序时越界(150分)

  • 主题发起人 主题发起人 iamyourneed
  • 开始时间 开始时间
I

iamyourneed

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

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部