2014-12-04 63 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