2014-12-04 38 views
5

Ecco come ho compilato le librerie wxWidgets.Problemi con la libreria wxWidgets 3.0.2 sotto Mingw 64

Scarica 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 

Non in grado di collegare il mio programma di test con le nuove librerie costruite.

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*)' 

Cosa sto facendo male qui. Vedi qualche problema con il modo in cui sono costruite le librerie.

+0

Sto usando MinGW 64 Drangon (http://www.drangon.org/mingw/) – user1

+0

veda questo post https://groups.google.com/ forum/#! topic/wx-users/YQA0FKuyeU4 potrebbe essere utile –

+0

Ho ricompilato la libreria wxWidgets usando - mingw32-make -f makefile.gcc CFG = 64 CXXFLAGS = "- std = C++ 11 -DwxUSE_UNICODE_MSLU = 0" BUILD = debug UNICODE = 1 MONOLITHIC = 1 Ma questo non ha aiutato. – user1

risposta

8

Infine, ho capito come creare WxWidgets con MingW Drangon a 64 bit.

non impostare i flagsu -std=c++11.

Ecco una nota che ho trovato nella cartella WxWidgets. Ecco il mio problema!

C++ 11 Nota: Se si desidera compilare wxWidgets in modalità C++ 11, si attualmente avete usare -std = gnu ++ interruttore 11 come -std = C++ 11 disabilita alcune estensioni su cui wxWidgets si affida. Cioè per favore usa CXXFLAGS = "- std = gnu ++ 11".

Scarica 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

Forse qualcuno dovrebbe presentare un bug report; il valore predefinito per CXXFLAGS è vuoto, il che causa anche errori di compilazione poiché le funzionalità di C++ 11 sono invocate. Non vedo alcun problema con la presenza di 'config.gcc' include' CXXFLAGS? = -std = gnu ++ 11' –

+3

, anche meglio sarebbe naturalmente quello di risolvere la dipendenza da caratteristiche non standard :) –

+1

Grazie; questo ha anche risolto [il mio problema di C++ 11 (mingw qmake (Qt) C++ 11) (http://stackoverflow.com/questions/30767553/undefined-reference-when-using-c11-qmake-flags). –