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

+0

이 게시물을 참조 https://groups.google.com/ 포럼/#! 주제/wx-users/YQA0FKuyeU4 도움이 될 수 있습니다. –

+0

- mingw32-make -f makefile.gcc CFG = 64 CXXFLAGS = "- std = C++ 11 -DwxUSE_UNICODE_MSLU = 0"을 사용하여 wxWidgets 라이브러리를 다시 컴파일했습니다. BUILD = 디버그 UNICODE = 1 MONOLITHIC = 1 하지만 그건 도움이되지 못했습니다. – user1

답변

8

마지막으로 MingW Drangon 64 비트를 사용하여 WxWidgets를 빌드하는 방법을 알아 냈습니다.

CXX 플래그를 -std=c++11으로 설정하면 안됩니다.

다음은 WxWidgets 폴더에있는 메모입니다. 내 문제가있다!

C++ 11 참고 : C++ (11) 모드에서 wxWidgets에 컴파일하려면, 현재 -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' –

+3

을 include하는 데 아무런 문제가 없지만 비표준 기능에 대한 의존도를 고칠 수있을 것입니다. –

+1

Thanks; 이것은 또한 [내 mingw qmake (Qt) C++ 11 호] (http://stackoverflow.com/questions/30767553/undefined-reference-when-using-c11-qmake-flags)를 해결했습니다. –