0

我一直在尝试编译 wxWidgets 一段时间,我一直在使用 TDM-GCC 并且一直在按照这里的指南进行操作,但没有这样的运气。我的最后几行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

有人有什么想法吗?请帮忙,我真的很困惑。

4

2 回答 2

2

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

于 2013-10-18T18:33:08.253 回答
0

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

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

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

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

于 2015-04-28T16:00:05.793 回答