0

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

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

4

1 回答 1

2

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

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

于 2013-09-17T15:12:43.047 回答