2012-04-27 105 views
1
打造wxMSW-2.8.12

我已經嘗試了GCC的兩個不同版本(4.6和4.7)與一些配置,包括無法使用MinGW的

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

問題是...? – hochl 2012-04-27 13:02:45

+0

@ hochl問題是我不正確的做法是什麼,即是什麼導致了錯誤? – user841550 2012-04-27 13:07:16

回答

1

嘗試使用MinGW-w64構建wxWidgets時發生錯誤。在我的情況下,我的麻煩來源是我安裝了Strawberry Perl 5.14.2.1(64位),並且不知道 perl安裝了路徑中的gcc編譯器。

2

DWORD是一個32位值,而在64位架構上,一個指針是一個64位值。代碼應該使用DWORD_PTR,它被定義爲x86_64上的64位值和x86上的32位。 可能您應該將其構建爲32位應用程序,並避免嘗試將其構建爲本機64位應用程序。

+0

我當然試圖構建一個32位庫,但您的觀察似乎與我在研究此錯誤時看到的其他報告有所一致。用戶在試圖使用MinGW-w64時遇到這個問題,但我的版本顯然是32位的 – user841550 2012-04-27 13:38:06