2011-10-08 192 views
1

A.dll是一個本地的c + + dll,B.dll是託管的c + + dll。 A.dll依賴於B.dll,所以當加載A.dll時,B.dll自動加載,但是在卸載A.dll之後,B.dll仍然被加載。只有A.dll取決於B.dll,爲什麼B.dll不能被卸載?如何卸載託管的c + + dll?我正在使用vs2010。如何卸載託管的c + + DLL?

感謝

+0

我使用:: FreeLibrary API卸載託管的C++ DLL顯然,它可以卸載,是否有任何風險? – ldlchina

回答

1

一旦由CLR加載您不能卸載託管程序集。唯一的方法是殺死AppDomain。

+1

Darin Dimmitrov是對的。要卸載程序集,您必須創建單獨的AppDomain,該AppDomain將負責與包含App入口點的AppDomain(通常是exe文件)分離。對於更多這些AppDomain-s必須只交換字符串或值類型,否則你的B程序集最終加載到你的兩個AppDomain中,從而阻止你卸載B. –