什么时候C ++ DLL在C#中被释放?

时间:2013-09-17 14:22:38

标签: 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的新实例一起重用?

1 个答案:

答案 0 :(得分:2)

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

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