2016-07-29 13 views
-4

私は二日前に尋ねたものを再転記しました - しかし、私は自分自身をはっきり説明しませんでした。C#Dll自体がアンロードされますか?それは可能ですか

機能を実行した後で、注入されたC#DLLを自動的にアンロードすることは可能ですか?

C#のDLLをC++プログラムに読み込むことはできますが、アンロードする部分は難しいです。私はRobert Giesecke's Unmanaged Exportsのおかげでこれを行うことができます。

基本的に、C++プログラムは指定されたフォルダ内のすべてのdllを読み込み、エクスポートされた関数_start()を実行します。

私は成功したエクスポートメソッド_start()を使用して個人用C#dllを '挿入'したいと考えています。 C++プログラムは関数をロードして実行しますが、後でアンロードするようにはプログラムされていません。私は_start()メソッドの終わりにあるC#dllをどうにかしてアンロードする必要があります。

は私が

t.Thread(() => FreeLibraryandExitThread()); t.Start();

が、それは動作しません...しかし、イムわからないではありません場合は、C#のDLL内の別のスレッドとして起動、輸入FreeLibraryandExitThread()を呼び出して試してみましたこれは管理されたDLLであるため、私は検索して、そのメソッドがC++のdllで動作することを発見しました。

ありがとうございました

+0

は、appdomainを使用します。 –

答えて

0

私はうまくいかないと思います。外部からのハンドルでFreeLibraryを呼び出します(LoadLibraryはDLLの外の領域から呼び出されています)。コードはもはや有効ではないメモリ位置で実行されるためです。

これが可能であっても、悪いデザインのように匂いがする。おそらく、いくつかのアップデータを作成したいと思うかもしれません。あなたが期待する結果が何であるかをもう少し説明してください。内部からDLLをアンロードすることは、方法ではありません。

関連する問題