2014-12-04 62 views
5

下面是我編譯wxWidgets庫的方法。在Mingw下使用wxWidgets 3.0.2庫的麻煩64

下載https://sourceforge.net/projects/wxwindows/files/3.0.2/wxMSW-Setup-3.0.2.exe

set path=%MINGW%\bin 
cd D:\wxWidgets-3.0.2\build\msw 

mingw32-make -f makefile.gcc CFG=64 CXXFLAGS=-std=c++11 BUILD=debug UNICODE=1 MONOLITHIC=1 
mingw32-make -f makefile.gcc CFG=64 CXXFLAGS=-std=c++11 BUILD=release UNICODE=1 MONOLITHIC=1 

不能採用內置新的庫鏈接我的測試程序。

D:\wxWidgets-3.0.2\lib\gcc_lib64/libwxmsw30ud.a(monolib_filename.o): In function `wxChmod(wxString const&, unsigned short)': 
D:\wxWidgets-3.0.2\build\msw/../../include/wx/filefn.h:513: undefined reference to `wxMSLU__wchmod(wchar_t const*, int)' 
D:\wxWidgets-3.0.2\lib\gcc_lib64/libwxmsw30ud.a(monolib_filename.o): In function `wxOpen(wxString const&, int, unsigned short)': 
D:\wxWidgets-3.0.2\build\msw/../../include/wx/filefn.h:515: undefined reference to `wxMSLU__wopen(wchar_t const*, int, int)' 
D:\wxWidgets-3.0.2\lib\gcc_lib64/libwxmsw30ud.a(monolib_file.o): In function `wxRemove(wxString const&)': 
D:\wxWidgets-3.0.2\build\msw/../../include/wx/wxcrt.h:758: undefined reference to `wxMSLU__wremove(wchar_t const*)' 
D:\wxWidgets-3.0.2\lib\gcc_lib64/libwxmsw30ud.a(monolib_file.o): In function `wxAccess(wxString const&, unsigned short)': 
D:\wxWidgets-3.0.2\build\msw/../../include/wx/filefn.h:511: undefined reference to `wxMSLU__waccess(wchar_t const*, int)' 
D:\wxWidgets-3.0.2\lib\gcc_lib64/libwxmsw30ud.a(monolib_filefn.o): In function `wxRename(wxString const&, wxString const&)': 
D:\wxWidgets-3.0.2\build\msw/../../include/wx/wxcrt.h:760: undefined reference to `wxMSLU__wrename(wchar_t const*, wchar_t const*)' 
D:\wxWidgets-3.0.2\lib\gcc_lib64/libwxmsw30ud.a(monolib_filefn.o): In function `wxRmDir(wxString const&)': 
D:\wxWidgets-3.0.2\build\msw/../../include/wx/filefn.h:524: undefined reference to `wxMSLU__wrmdir(wchar_t const*)' 
D:\wxWidgets-3.0.2\lib\gcc_lib64/libwxmsw30ud.a(monolib_filefn.o): In function `wxMkDir(wxString const&, unsigned short)': 
D:\wxWidgets-3.0.2\build\msw/../../include/wx/filefn.h:528: undefined reference to `wxMSLU__wmkdir(wchar_t const*)' 
D:\wxWidgets-3.0.2\lib\gcc_lib64/libwxmsw30ud.a(monolib_ffile.o): In function `wxFopen(wxString const&, wxString const&)': 
D:\wxWidgets-3.0.2\build\msw/../../include/wx/wxcrt.h:754: undefined reference to `wxMSLU__wfopen(wchar_t const*, wchar_t const*)' 

我在做什麼錯在這裏。你看到圖書館建設的方式有什麼問題嗎?

+0

我使用MinGW的64 Drangon(http://www.drangon.org/mingw/) – user1 2014-12-04 03:26:41

+0

看到這個職位https://groups.google.com/論壇/#!topic/wx-users/YQA0FKuyeU4可能會有所幫助 – 2014-12-04 03:36:39

+0

我重新編譯了wxWidgets庫使用 - mingw32-make -f makefile.gcc CFG = 64 CXXFLAGS =「 - std = C++ 11 -DwxUSE_UNICODE_MSLU = 0」 BUILD = debug UNICODE = 1 MONOLITHIC = 1 但是這沒有幫助。 – user1 2014-12-04 04:03:51

回答

8

最後,我想出瞭如何用MingW Drangon 64位構建WxWidgets。

您不應將CXX標誌設置爲-std=c++11

這裏的注意事項是我在WxWidgets文件夾中找到的。這是我的問題!

C++ 11注:如果你想編譯wxWidgets的在C++ 11模式,你 目前有 使用-std = GNU + 11交換機作爲-std = C++ 11將禁用一些wxWidgets依賴的擴展 。即請使用CXXFLAGS =「 - std = gnu ++ 11」。

下載https://sourceforge.net/projects/wxwindows/files/3.0.2/wxMSW-Setup-3.0.2.exe

set path=C:\mingw64\bin 
cd C:\wxWidgets-3.0.2\build\msw 

mingw32-make -f makefile.gcc CXXFLAGS="-std=gnu++11" BUILD=debug UNICODE=1 SHARED=1 
mingw32-make -f makefile.gcc CXXFLAGS="-std=gnu++11" BUILD=release UNICODE=1 SHARED=1 
mingw32-make -f makefile.gcc CXXFLAGS="-std=gnu++11" BUILD=debug UNICODE=1 SHARED=0 
mingw32-make -f makefile.gcc CXXFLAGS="-std=gnu++11" BUILD=release UNICODE=1 SHARED=0 
+2

也許有人應該提交錯誤報告; CXXFLAGS的默認值爲空,由於依賴C++ 11功能,這也會導致構建錯誤。我沒有看到有'config.gcc'包含'CXXFLAGS?= -std = gnu ++ 11' – 2015-02-04 00:54:04

+3

甚至更​​好的當然是解決對非標準功能的依賴問題:) – 2015-02-04 00:54:19

+1

謝謝;這也解決了[我的mingw qmake(Qt)C++ 11問題](http://stackoverflow.com/questions/30767553/undefined-reference-when-using-c11-qmake-flags)。 – 2015-07-04 13:49:34