我有一个加载到C#Windows窗体应用程序的C ++ DLL。我正在尝试使用dll创建一个opengl上下文,并保留它以便在卸载/重新加载dll时在托管应用程序中使用。我正在使用LoadLibrary和FreeLibrary来加载DLL。
这可能吗?如果C ++ DLL加载opengl DLL,如果我在加载它的DLL上调用FreeLibrary,是否会卸载opengl dll?是否可以安全地将c ++ DLL创建的非托管对象存储在托管代码中,并将其与该DLL的新实例一起重用?
答案 0 :(得分:2)
如果OpenGL dl也加载了Load Library调用,那么卸载DLL不会影响它,除非你专门卸载它。如果它是由系统自动加载的,那么当你卸载C ++ dll时它将被卸载。只要未卸载OpenGl,并且在创建OpenGL上下文中使用的窗口句柄仍然有效,您就可以使用OpenGL上下文。
但我想知道你为什么不直接从你的应用程序调用OpenGL DLL?