Win32API質問箱 Build47
■ このスレッドは過去ログ倉庫に格納されています
0506デフォルトの名無しさん
2006/11/28(火) 14:44:11COM風のDLLを作ってるときに、
void IHOGE::Release()
{
// あらかじめ保存しておいた、exe側のWinAPIのFreeLibrary()のアドレスと
BOOL (WINAPI *fpFreeLibrary)(HMODULE) = m_fpFreeLibrary;
// DLLのハンドルをローカル変数にコピーしてから、
HMODULE hLibrary = m_hLibrary;
// 自殺して
delete this;
// DLL解放
fpFreeLibrary(hLibrary);
}
なんてやろうとしたんですが、DLL解放のところでバグってしまいました。
以前VC6でやっててうまくいってたんですが
(実行時にDLLの方がDLL解放の処理を書いてないバージョンのままだった可能性はあります・・・)
VC2005Expressでやるとダメでした。
こんなことせずに自前で解放すれば大丈夫なのですが、
DLLから得た関数の中でDLLを解放することはそもそも原理的にダメなのでしょうか?
そのあたりの理屈が知りたいので、よろしければ教えてください。
■ このスレッドは過去ログ倉庫に格納されています