私はこの問題をあちらこちらで、特に7bitで見てきましたが、私はこの問題を回避することができませんでした:
egyテスタはdeinit()の間にロードされたライブラリの参照カウントを適切に減らしません。このため、DLLファイルはシステムにロードされたままになり、再度テスターを実行しようとするとクラッシュします。
私はGetModuleHandle()とFreeLibrary()を使おうとしました、しかしそれは問題を解決しないようでした。
(IsTesting()){コードを挿入しました。印刷(dll_handle); if(dll_handlegt; 0)FreeLibrary(dll_handle);訂正:
dll_handleは0以外の数値を返し、FreeLibraryはそれをデクリメントします。
もう一度GetModuleHandle()をチェックすると、0が返されます。これは、ライブラリがアンロードされたことを意味します。
しかし、もう一度テスターを起動しても、まだクラッシュします。
私は最適化機能を使うことができないので、これはかなりいらいらしています。
正確にはどうなりますか? DLLのグローバル変数は、最後の実行のデータによって初期化され、汚染されたままになっていますか?それとも、すでに初期化されたDLLを介してDLLを初期化しようとしたときにエラーが発生しますか?