Многочисленные ошибки при компиляции wxWidgets с gcc 4.8.1
Я уже некоторое время пытаюсь скомпилировать библиотеку wxWidgets для Code::Blocks, и я все еще получаю много разных ошибок.
Мои версии gcc: gcc (tdm-2) 4.8.1
и я хочу создавать новейшие wxWidgets: 3.1.0. Я пробовал 3 разных источника, и каждый раз у меня появляется какая-то ошибка (иногда такая же, иногда другая). Я работаю на Windows 8.1.
- [1]
mingw32-make -f makefile.gcc UNICODE=1 MONOLITHIC=1 SHARED=1 BUILD=debug CXXFLAGS="-std=gnu++11"
и вывод ошибки:
../../src/common/wxcrt.cpp: In function 'int wxVsprintf(wchar_t*, const wxString &, va_list)': ../../src/common/wxcrt.cpp:623:47: error: invalid conversion from 'const wchar_t *' to 'size_t {aka unsigned int}' [-fpermissive] return wxCRT_VsprintfW(str, format.wc_str(), argptr); ^ ../../src/common/wxcrt.cpp:623:56: error: cannot convert 'va_list {aka char*}' t o 'const wchar_t*' for argument '3' to 'int vswprintf(wchar_t*, size_t, const wc har_t*, char*)' return wxCRT_VsprintfW(str, format.wc_str(), argptr); ^ ../../src/common/wxcrt.cpp:632:1: warning: control reaches end of non-void funct ion [-Wreturn-type] } ^ makefile.gcc:6786: recipe for target 'gcc_mswuddll\monodll_wxcrt.o' failed mingw32-make: *** [gcc_mswuddll\monodll_wxcrt.o] Error 1
- [2]
mingw32-make -f makefile.gcc SHARED=1 UNICODE=1 BUILD=debug
и вывод ошибки:
../../src/common/wxcrt.cpp: In function 'int wxVsprintf(wchar_t*, const wxString &, va_list)': ../../src/common/wxcrt.cpp:623:47: error: invalid conversion from 'const wchar_t *' to 'size_t {aka unsigned int}' [-fpermissive] return wxCRT_VsprintfW(str, format.wc_str(), argptr); ^ ../../src/common/wxcrt.cpp:623:56: error: cannot convert 'va_list {aka char*}' t o 'const wchar_t*' for argument '3' to 'int vswprintf(wchar_t*, size_t, const wc har_t*, char*)' return wxCRT_VsprintfW(str, format.wc_str(), argptr); ^ ../../src/common/wxcrt.cpp:632:1: warning: control reaches end of non-void funct ion [-Wreturn-type] } ^ makefile.gcc:11860: recipe for target 'gcc_mswuddll\basedll_wxcrt.o' failed mingw32-make: *** [gcc_mswuddll\basedll_wxcrt.o] Error 1
- [3]
mingw32-make -f makefile.gcc USE_XRC=1 SHARED=1 MONOLITHIC=1 BUILD=release UNICODE=1 USE_OPENGL=1 VENDOR=cb CXXFLAGS="-fno-keep-inline-dllexport"1
и ошибка:
../../src/common/wxcrt.cpp: In function 'int wxVsprintf(wchar_t*, const wxString &, va_list)': ../../src/common/wxcrt.cpp:623:47: error: invalid conversion from 'const wchar_t *' to 'size_t {aka unsigned int}' [-fpermissive] return wxCRT_VsprintfW(str, format.wc_str(), argptr); ^ ../../src/common/wxcrt.cpp:623:56: error: cannot convert 'va_list {aka char*}' t o 'const wchar_t*' for argument '3' to 'int vswprintf(wchar_t*, size_t, const wc har_t*, char*)' return wxCRT_VsprintfW(str, format.wc_str(), argptr); ^ ../../src/common/wxcrt.cpp:632:1: warning: control reaches end of non-void funct ion [-Wreturn-type] } ^ makefile.gcc:6786: recipe for target 'gcc_mswudll\monodll_wxcrt.o' failed mingw32-make: *** [gcc_mswudll\monodll_wxcrt.o] Error 1
Может кто-нибудь, пожалуйста, посоветуйте мне, что еще я могу сделать?
1 ответ
Я не уверен, почему вы говорите о множественных ошибках, это явно одна и та же ошибка и связано с использованием стандартных vswprintf()
вместо функции из MSVC CRT, которая обычно используется MinGW по умолчанию. Первый должен использоваться только тогда, когда __USE_MINGW_ANSI_STDIO
в действительности, и это очень странно, что вы все еще получаете это без него, интересно, если у вас есть CPPFLAGS
или подобный набор в вашей среде?
В любом случае, я бы рекомендовал использовать TDM-GCC 4.9, так как 3.1.0 определенно компилируется с ним (это то, с чем были собраны официальные двоичные файлы). Конечно, 4.8 тоже должен работать, поэтому стоит проверить, как __USE_MINGW_ANSI_STDIO
получить определение, но установка 4.9, вероятно, будет проще для вас.