2013-10-17 66 views
0

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

../../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

没有足够的信息,您忽略了包含实际错误的行。 –

+1

将错误降级为警告。 看到这个答案http://stackoverflow.com/a/8843848/16582 – ravenspoint

+0

对不起,我必须健全** **真的很笨,但我如何才能'的mingw32-make'通过这个选项,GCC? –

回答

2

随着@ravenspoint的帮助下,和一些google搜索,我发现this,其中提到传递变量CXXFLAGS传递参数给G ++(和GCC,使用CFLAGS),然后从@ ravenspoint的回答我说CXXFLAGS+=-fpermissivemingw32-make -f makefile.gcc SHARED=1 UNICODE=1 BUILD=release MONOLITHIC=1 ,将-fpermissive传递给g ++。

0

{aka void*}unsigned int损失精度[-fpermissive]

即当它期望的32位,并得到一个64位,通常在编译意味着是在TDM默认-m64位模式的32位代码中的问题发生。

对于void*失去精度,它必须是一个64位的变量,unsigned int必须是32

如果您通过禁用警告降级变位和64位的机器上运行它,你可以得到一个指针运行程序时出现错误崩溃。