1

我已经尝试了两种不同版本的 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 位库(无论如何都不是故意的)
我做错了什么?

4

2 回答 2

2

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

于 2012-04-27T13:26:16.873 回答
1

尝试使用 MinGW-w64 构建 wxWidgets 时会发生错误。就我而言,问题的根源在于我安装了 Strawberry Perl 5.14.2.1 (64bit) 并且不知道 perl 已经安装了路径中的 gcc 编译器。

于 2012-04-28T00:30:27.780 回答