0

我在 C++ DLL 中有以下代码。它加载并调用使用 C# 构建的 DotNet DLL 中的方法。

Assembly^ a = Assembly::LoadFrom(gcnew String("MyDotNet.dll"));
Type^ type = a->GetType("MyAssemply.Assembly");
MethodInfo^ method = type->GetMethod("MyMethod");
Object^ obj = Activator::CreateInstance(type);
array<Object^>^ params = gcnew array<Object^>(0) {  };
Object^ ret = method->Invoke(obj, params);

问题是即使我在 C++ DLL 上执行 FreeLibrary,它似乎也不会释放资源或 DLL。是否需要调用 API 或方法来释放 DLL/资源?

我正在使用 Visual Studio 2010。

谢谢。

4

1 回答 1

1

您无法从应用程序池中卸载托管程序集。您可以创建另一个应用程序池并卸载它。

这篇文章是相关的:如何从主 AppDomain 中卸载程序集?

于 2012-12-07T15:51:20.677 回答