无法使用MinGW构建wxMSW-2.8.12

时间:2012-04-27 12:53:52

标签: c++ mingw wxwidgets mingw32

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

2 个答案:

答案 0 :(得分:2)

DWORD是32位值,而在64位架构上,指针是64位值。代码应该使用DWORD_PTR,它被定义为x86_64上的64位值和x86上的32位。 可能你应该将它构建为32位应用程序,并避免尝试将其构建为本机64位应用程序。

答案 1 :(得分:1)

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