c++ - 如何释放在 C++ 中加载的 DotNet 程序集

标签 c++ .net c++-cli

我在 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。

谢谢。

最佳答案

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

这篇文章是相关的:How to unload an assembly from the primary AppDomain?

关于c++ - 如何释放在 C++ 中加载的 DotNet 程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13766400/

相关文章:

c++ - 初始化动态字符串数组 (C++)

c# - WPF绝对定位

c# - 如何修改所有派生类中的方法返回值?

c++ - 集成 LLVM passes

c++ - 使用可变参数模板创建具有可变列宽的二维数组?

c++ - 在C++中,不提供默认构造函数的类的实例是否可以单独声明和实例化(分两步)

c# - 从多个列表创建组合列表

c++ - 我可以在表单应用程序的 while 循环中查询用户交互事件吗?

msbuild - 如何在 C++/CLI 项目中使用代码契约?

c++ - 在 C++/CLI 代码中包含的代码中使用 <thread>。寻找更好的解决方案