我尝试了两种不同版本的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位库(无论如何都不是故意)
我做错了什么?
答案 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编译器,它位于路径中。