【问题标题】:Error while compiling wxWidgets with TDM-GCC使用 TDM-GCC 编译 wxWidgets 时出错
【发布时间】:2013-10-17 17:23:21
【问题描述】:

我一直在尝试编译 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

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

【问题讨论】:

  • 信息不够,您省略了包含实际错误的行。
  • 将错误降级为警告。看到这个答案stackoverflow.com/a/8843848/16582
  • 抱歉,我一定听起来真的很愚蠢,但我如何让mingw32-make 将此选项传递给 GCC?

标签: wxwidgets


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-30
      • 2013-10-28
      • 2016-08-30
      • 1970-01-01
      • 2014-03-18
      • 1970-01-01
      • 2013-06-13
      • 2021-03-06
      相关资源
      最近更新 更多