как выгрузить управляемую С++ dll?

A.dll — это родная dll c++, B.dll — это управляемая dll c++. A.dll зависит от B.dll, поэтому при загрузке A.dll B.dll загружается автоматически, но после выгрузки A.dll B.dll все еще загружается. Только A.dll зависит от B.dll, почему B.dll нельзя выгрузить? Как выгрузить управляемую С++ dll? Я использую вс2010.

Спасибо


person ldlchina    schedule 08.10.2011    source источник
comment
Я использую ::FreeLibrary API для выгрузки управляемой dll C++, очевидно, ее можно выгрузить, есть ли риск?   -  person ldlchina    schedule 09.10.2011


Ответы (1)


Вы не можете выгрузить управляемую сборку после ее загрузки средой CLR. Единственный способ — убить AppDomain.

person Darin Dimitrov    schedule 08.10.2011
comment
Дарин Димитров прав. Чтобы выгрузить сборку, вы должны создать отдельный AppDomain, который будет отвечать за разделение с AppDomain, содержащим точку входа в ваше приложение (обычно exe-файл). Более того, эти домены приложений должны обмениваться только типами строк или значений, иначе ваша сборка B в конечном итоге загружается в оба ваших домена приложений и, таким образом, предотвращает выгрузку B. - person rudolf_franek; 08.10.2011