我一直在尝试编译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
有人有任何想法吗?请帮助,我真的很困惑。
答案 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位计算机上运行它,则在运行程序时可能会出现指针错误崩溃。