c# - C# 什么时候释放 C++ DLL?

标签 c# c++ opengl dll interop

我有一个加载到 C# Windows 窗体应用程序中的 C++ DLL。我正在尝试使用 dll 创建一个 opengl 上下文,并在卸载/重新加载 dll 时保留它以供在托管应用程序中使用。我正在使用 LoadLibrary 和 FreeLibrary 加载 DLL。

这可能吗?如果 C++ DLL 加载 opengl DLL,如果我在加载它的 DLL 上调用 FreeLibrary,opengl dll 会被卸载吗?将由 C++ DLL 创建的非托管对象存储在托管代码中并在该 DLL 的新实例中重用它们是否安全?

最佳答案

如果 OpenGL dl 也通过加载库调用加载,那么卸载 DLL 不会影响它,除非您专门卸载它。如果它是由系统自动加载的,那么当您卸载 C++ dll 时它将被卸载。只要未卸载 OpenGl 并且在创建 OpenGL 上下文时使用的窗口句柄仍然有效,您就可以使用 OpenGL 上下文。

但我想知道您为什么不直接从您的应用程序调用 OpenGL dll?

关于c# - C# 什么时候释放 C++ DLL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18852499/

相关文章:

c# - 当满足计数或长度条件时使用 TakeWhile 打破循环

c# - Linq-to-SQL 中的交叉连接效率如何?

c++ - 在 OpenGL 中加载纹理时颜色错误

c++ - 为什么我的顶点缓冲区对象出现访问冲突错误?

c - 打开和关闭 GLFW 窗口后无法获取控制台输入

c# - 如何在 C# 中增加/减少日期字符间距

c# - 如何使用 mvc4 C# 在我的 linq 中将多个表包含到实体急切加载中

c++ - 如何在曲线上设置实心球体的动画

c++ - 如何在 C++11 中初始化(通过初始化列表)多维 std::array?

c++ - 在构造函数中访问非类型模板参数