2016-07-29 59 views
-4

我重新發布了兩天前我問過的東西 - 但我沒有清楚地解釋自己。C#Dll卸載自己?是否有可能

是否有可能得到一個注入的C#DLL自我卸載後,它已經執行其功能?

我可以讓我的C#DLL加載到一個C++程序,但卸載部分是困難的。我可以這樣做,這要歸功於Robert Giesecke's Unmanaged Exports

本質上,C++程序加載指定文件夾中的所有dll並運行導出的函數_start()。

我想用我已經成功實現的導出方法_start()'注入'個人C#dll。 C++程序將加載並運行該函數,但未編程爲在卸載之後。我希望_start()方法結尾的c#dll以某種方式卸載它自己。

我已經打過電話了進口的FreeLibraryAndExitThread(),開始爲C#DLL

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

但是它不工作...林不知道,如果有更多的內部一個單獨的線程這導致它是一個託管的DLL,我已經搜索並發現該方法適用於C++ dll。

謝謝

+0

使用應用程序域。 –

回答

0

我不認爲它會工作。使用外部句柄(LoadLibrary將從DLL之外的區域調用)調用FreeLibrary,因爲代碼在內存位置中運行,該內存位置不再有效。

即使這是可能的,它聞起來像一個糟糕的設計。也許你想做一些更新或相似。多解釋一下你期望的結果。從本身卸載DLL並不是要走的路。

相關問題