为什么wxWidgets不能与Code :: Blocks + minGW一起使用?

时间:2012-08-21 16:57:20

标签: c++ wxwidgets codeblocks

如何让wxWidgets 2.9.4与Code :: Blocks + MinGW一起使用?我已经构建了库(仅发布)并编写了一些代码。当我构建没有事件表时,它可以正常工作,但是使用它们会导致错误。

当存在事件表时,这是构建消息的转储:

obj\Debug\main.o||In function `_ZN21wxEventTableEntryBaseC2EiiP14wxEventFunctorP8wxObject':|
C:\wxWidgets\include\wx\event.h|2870|undefined reference to `_wxTheAssertHandler'|
C:\wxWidgets\include\wx\event.h|2871|undefined reference to `wxOnAssert(char const*, int, char const*, char const*, char const*)'|
obj\Debug\main.o||In function `_ZN20wxEventFunctorMethodI14wxEventTypeTagI14wxCommandEventE12wxEvtHandler7wxEventS3_EC1EMS3_FvRS4_EPS3_':|
C:\wxWidgets\include\wx\event.h|374|undefined reference to `_wxTheAssertHandler'|
C:\wxWidgets\include\wx\event.h|374|undefined reference to `wxOnAssert(char const*, int, char const*, char const*, char const*)'|
obj\Debug\main.o||In function `_ZN20wxEventFunctorMethodI14wxEventTypeTagI14wxCommandEventE12wxEvtHandler7wxEventS3_EclEPS3_RS4_':|
C:\wxWidgets\include\wx\event.h|392|undefined reference to `_wxTheAssertHandler'|
C:\wxWidgets\include\wx\event.h|392|undefined reference to `wxOnAssert(char const*, int, char const*, char const*, char const*)'|
||=== Build finished: 6 errors, 0 warnings ===|

和另一个构建日志:

-------------- Build: Debug in G1BC ---------------

Compiling: main.cpp
Linking executable: bin\Debug\G1BC.exe
obj\Debug\main.o: In function `_ZN21wxEventTableEntryBaseC2EiiP14wxEventFunctorP8wxObject':
C:/wxWidgets/include/wx/event.h:2870: undefined reference to `_wxTheAssertHandler'
C:/wxWidgets/include/wx/event.h:2871: undefined reference to `wxOnAssert(char const*, int, char const*, char const*, char const*)'
obj\Debug\main.o: In function `_ZN20wxEventFunctorMethodI14wxEventTypeTagI14wxCommandEventE12wxEvtHandler7wxEventS3_EC1EMS3_FvRS4_EPS3_':
C:/wxWidgets/include/wx/event.h:374: undefined reference to `_wxTheAssertHandler'
C:/wxWidgets/include/wx/event.h:374: undefined reference to `wxOnAssert(char const*, int, char const*, char const*, char const*)'
obj\Debug\main.o: In function `_ZN20wxEventFunctorMethodI14wxEventTypeTagI14wxCommandEventE12wxEvtHandler7wxEventS3_EclEPS3_RS4_':
C:/wxWidgets/include/wx/event.h:392: undefined reference to `_wxTheAssertHandler'
C:/wxWidgets/include/wx/event.h:392: undefined reference to `wxOnAssert(char const*, int, char const*, char const*, char const*)'
collect2.exe: error: ld returned 1 exit status
Process terminated with status 1 (0 minutes, 4 seconds)
6 errors, 0 warnings

Code :: Blocks说这段代码就是问题所在:      The bad code

希望你能提前帮助,谢谢你们!

1 个答案:

答案 0 :(得分:1)

您需要始终将DEBUG_FLAG=1保留为 ,否则断言将无法编译。

这就是它在MSW的install.txt中所说的:

  

指定wxWidgets中的调试支持级别。请注意这一点   独立于BUILD和DEBUG_INFO选项。 默认情况下始终设置为1,表示>启用调试支持:断言是   编译成代码(默认情况下,它们在发布时处于非活动状态   应用程序的构建,但可以启用), wxLogDebug()和   wxLogTrace()可用,并且定义了 WXDEBUG 。将其设置为   0在设置时完全禁用wxWidgets中的所有调试代码   它到2甚至可以实现耗时的断言和检查   被认为不适合生产环境。