C++ wxWidgets:与wxGLCanvas/wxGLContext一起崩溃

C++ wxWidgets:与wxGLCanvas/wxGLContext一起崩溃,c++,wxwidgets,C++,Wxwidgets,这至少在Windows XP上的wxWidgets 2.8.9和2.8.10中发生,但未在其他PatForm上测试: 我有两个dll,a.dll和b.dll,它们是运行在主机序列器中的VST插件。它们使用wxWidgets和OpenGL。在初始化时,我在两个插件中调用它(但m_宽度和m_高度不同): 只要我只打开a.dll或b.dll,这就可以正常工作。此外,打开a.dll或b.dll的多个实例也可以。但是,当我同时打开a.dll和b.dll时,主机定序器在调用此行后立即关闭(即使在调试时):

这至少在Windows XP上的wxWidgets 2.8.9和2.8.10中发生,但未在其他PatForm上测试:

我有两个dll,a.dll和b.dll,它们是运行在主机序列器中的VST插件。它们使用wxWidgets和OpenGL。在初始化时,我在两个插件中调用它(但m_宽度和m_高度不同):

只要我只打开a.dll或b.dll,这就可以正常工作。此外,打开a.dll或b.dll的多个实例也可以。但是,当我同时打开a.dll和b.dll时,主机定序器在调用此行后立即关闭(即使在调试时):

这就是我在输出上看到的:

"host.exe": "D:\something\b.dll" geladen, Symbole wurden geladen.
14:49:02: ..\..\src\msw\app.cpp(364): 'RegisterClass(frame)' failed with error 0x00000582 (klasse ist bereits vorhanden).
14:49:03: ..\..\src\msw\app.cpp(373): 'RegisterClass(no redraw frame)' failed with error 0x00000582 (klasse ist bereits vorhanden).
14:49:03: ..\..\src\msw\app.cpp(383): 'RegisterClass(MDI parent)' failed with error 0x00000582 (klasse ist bereits vorhanden).
14:49:03: ..\..\src\msw\app.cpp(392): 'RegisterClass(no redraw MDI parent frame)' failed with error 0x00000582 (klasse ist bereits vorhanden).
....

输出中的错误消息似乎表明您已将wxWidgets静态链接到这两个插件中。只要您只加载一个插件,甚至多次加载,这将起作用,因为wxWidgets库将只初始化一次

但是,如果您尝试在第一个插件仍然加载的情况下加载第二个插件,那么第二个插件中wxWidgets的初始化将失败,因此迟早会发生崩溃

您应该使用wxWidgets动态链接这两个插件。谷歌搜索wxWidgets和插件/可加载模块,您应该能够找到关于这个问题的更多信息

m_canvas->SetCurrent(*m_context);
"host.exe": "D:\something\b.dll" geladen, Symbole wurden geladen.
14:49:02: ..\..\src\msw\app.cpp(364): 'RegisterClass(frame)' failed with error 0x00000582 (klasse ist bereits vorhanden).
14:49:03: ..\..\src\msw\app.cpp(373): 'RegisterClass(no redraw frame)' failed with error 0x00000582 (klasse ist bereits vorhanden).
14:49:03: ..\..\src\msw\app.cpp(383): 'RegisterClass(MDI parent)' failed with error 0x00000582 (klasse ist bereits vorhanden).
14:49:03: ..\..\src\msw\app.cpp(392): 'RegisterClass(no redraw MDI parent frame)' failed with error 0x00000582 (klasse ist bereits vorhanden).
....