【问题标题】:Unable to build wxMSW-2.8.12 using MinGW [closed]无法使用 MinGW 构建 wxMSW-2.8.12 [关闭]
【发布时间】:2012-05-08 05:19:35
【问题描述】:

我已经尝试了两个不同版本的 gcc(4.6 和 4.7),其中有几种配置,包括

make -f makefile.gcc USE_OPENGL=1 BUILD=debug SHARED=0 RUNTIME_LIBS=static UNICODE=1
make -f makefile.gcc MONOLITHIC=1 BUILD=debug SHARED=0 UNICODE=1
make -f makefile.gcc USE_OPENGL=1 BUILD=debug UNICODE=1

这是错误

../../src/msw/thread.cpp:525: error: cast from 'void*' to 'THREAD_RETVAL' loses precision
../../src/msw/thread.cpp: In member function 'wxThreadError wxThreadInternal::WaitForTerminate(wxCriticalSection&, void**, wxThread*)':
../../src/msw/thread.cpp:845: error: cast from 'void*' to 'DWORD' loses precision
../../src/msw/thread.cpp: In member function 'void wxThread::Exit(void*)':
../../src/msw/thread.cpp:1165: error: cast from 'void*' to 'unsigned int' loses precision

我的平台是 Windows 7 64 位,但我没有尝试构建 64 位库(无论如何都不是故意的)
我做错了什么?

【问题讨论】:

  • 问题是......?
  • @hochl 问题是我做错了什么,即导致错误的原因是什么?

标签: c++ mingw wxwidgets mingw32


【解决方案1】:

DWORD 是 32 位值,而在 64 位架构上,指针是 64 位值。代码应该使用 DWORD_PTR,它在 x86_64 上定义为 64 位值,在 x86 上定义为 32 位。 可能您应该将其构建为 32 位应用程序,而避免尝试将其构建为原生 64 位应用程序。

【讨论】:

  • 我当然正在尝试构建一个 32 位库,但您的观察似乎与我在研究此错误时看到的其他报告有些一致。用户在尝试使用 MinGW-w64 时遇到此问题,但我的版本显然是 32 位
【解决方案2】:

尝试使用 MinGW-w64 构建 wxWidgets 时发生错误。在我的情况下,我的麻烦来源是我安装了 Strawberry Perl 5.14.2.1 (64bit) 并且不知道 perl 已经在路径中安装了一个 gcc 编译器。

【讨论】:

    猜你喜欢
    • 2019-10-13
    • 2013-04-05
    • 2012-03-11
    • 2017-01-18
    • 1970-01-01
    • 1970-01-01
    • 2013-10-28
    • 1970-01-01
    • 2014-01-17
    相关资源
    最近更新 更多