使用TDM-GCC编译wxWidgets时出错

时间:2013-10-17 17:23:22

标签: wxwidgets

我一直在尝试编译wxWidgets一段时间了,我一直在使用TDM-GCC并一直遵循指南here而没有这样的运气。我mingw32-make -f makefile.gcc SHARED=1 UNICODE=1 BUILD=release MONOLITHIC=1的最后几行是

../../src/msw/thread.cpp: In member function 'void wxThread::Exit(wxThread::Exit
Code)':
../../src/msw/thread.cpp:1165:28: error: cast from 'wxThread::ExitCode {aka void
*}' to 'unsigned int' loses precision [-fpermissive]
     _endthreadex((unsigned)status);

makefile.gcc:4957: recipe for target 'gcc_mswudll\monodll_thread.o' failed
mingw32-make: *** [gcc_mswudll\monodll_thread.o] Error 1

有人有任何想法吗?请帮助,我真的很困惑。

2 个答案:

答案 0 :(得分:2)

在@ravenspoint和google搜索的帮助下,我找到this,其中提到传递变量CXXFLAGS以传递参数g ++(对于gcc,使用CFLAGS),然后从@ ravenspoint的回答我将CXXFLAGS+=-fpermissive添加到我的mingw32-make -f makefile.gcc SHARED=1 UNICODE=1 BUILD=release MONOLITHIC=1,将-fpermissive传递给g ++。

答案 1 :(得分:0)

{aka void*}unsigned int会失去精确度[-fpermissive]

当它需要32位并获得64位时会发生这种情况,通常在TDM默认-m64位模式下编译代码为32位时会出现问题。

要使void*失去精度,它必须是64位变量,unsigned int必须为32。

如果通过禁用警告降级变量并在64位计算机上运行它,则在运行程序时可能会出现指针错误崩溃。