【发布时间】:2016-06-30 03:32:39
【问题描述】:
我已经尝试了一段时间现在为 Code::Blocks 编译 wxWidgets 库,但我仍然遇到很多不同的错误。
我的 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
谁能告诉我我还能做什么?
【问题讨论】:
-
您是否运行
./configure来配置源? (您应该以这种方式设置 unicode 等,而不是手动添加编译器开关) -
@M.M 我没有,但我为什么要这样做?我没有找到任何关于它的信息。第二件事是,如果我使用的是 Windows,我应该如何运行它,而你编写它时就像使用 Linux 一样?
-
应该有适合您平台的构建说明
-
所以有(多个)但 1、2 和 3(如上所述)不起作用
标签: gcc compilation mingw wxwidgets mingw32