wxwidget 编译失败与 mingw

wxwidget compilation failing with mingw

我正在使用以下命令编译 wxWidgets-3.1.0 :

C:\wxWidgets-3.1.0\build\msw>mingw32-make -f makefile.gcc
if not exist ..\..\lib\gcc_lib\mswud mkdir ..\..\lib\gcc_lib\mswud
gcc -c -o gcc_mswud\wxtiff_tif_win32.o -g -O0 -mthreads  -DHAVE_W32API_H -DNDEBUG -I..\..\src\zlib -I..\..\src\jpeg -I..\..\src\tiff\libtiff   -MTgcc_mswud\wxtiff_tif_win32.o -MFgcc_mswud\wxtiff_tif_win32.o.d -MD -MP ../../src/tiff/libtiff/tif_win32.c
In file included from ../../src/tiff/libtiff/tiffio.h:257:0,
                from ../../src/tiff/libtiff/tiffiop.h:59,
                from ../../src/tiff/libtiff/tif_win32.c:30:
c:\mingw\include\stdio.h:345:12: error: expected '=', ',', ';', 'asm' or '__attribute__' before '__mingw__snprintf'
extern int __mingw_stdio_redirect__(snprintf)(char*, size_t, const char*, ...);
            ^
makefile.gcc:6018: recipe for target 'gcc_mswud\wxtiff_tif_win32.o' failed
mingw32-make: *** [gcc_mswud\wxtiff_tif_win32.o] Error 1

我查看了 的解决方案,但没有帮助。

也关注 this,但出现不同的错误:

c:\mingw\include\stdio.h:345:12: error: expected '=', ',', ';', 'asm' or '__attribute__' before '__mingw__snprintf'
extern int __mingw_stdio_red.oirect]);_
            ^
E_(snprintf)(char*, size_t, const char*, ...);
            ^
rror 1
mingw32-make: *** Waiting for unfinished jobs....
Makefile.gcc:6024: recipe for target 'gcc_mswudll\wxtiff_tif_close.o' failed
mingw32-make: *** [gcc_mswudll\wxtiff_tif_close.o] Error 1
Makefile.gcc:6027: recipe for target 'gcc_mswudll\wxtiff_tif_codec.o' failed
mingw32-make: *** [gcc_mswudll\wxtiff_tif_codec.o] Error 1
Makefile.gcc:6030: recipe for target 'gcc_mswudll\wxtiff_tif_color.o' failed
mingw32-make: *** [gcc_mswudll\wxtiff_tif_color.o] Error 1
Makefile.gcc:6033: recipe for target 'gcc_mswudll\wxtiff_tif_compress.o' failed
mingw32-make: *** [gcc_mswudll\wxtiff_tif_compress.o] Error 1
Makefile.gcc:6018: recipe for target 'gcc_mswudll\wxtiff_tif_win32.o' failed
mingw32-make: *** [gcc_mswudll\wxtiff_tif_win32.o] Error 1
In file included from ../../src/tiff/Mlaikbtiffe/tiffio.h:257:0,
f                 fromi le.gcc:6036.:. recipe for target 'gcc_mswudll\wxtiff_tif_dir.o' faile/d
../srcm/tiff/libtiff/tiffiopi.h:59,
n           g     fromw ../../src/t3iff/libtiff/tif_dirinfo.c:31:
c2:\mi-ngw\include\stdio.h:345:12: error: expected 'm=', ','a, ';', 'kasme' o:r '__attribute__' before ' __m*ing*w__*snp rint[f'
extern int __mingw_stdio_redirect__(snprintf)(char*, size_t, const char*, ...);
            ^
_mswudll\wxtiff_tif_dir.o] Error 1
Makefile.gcc:6039: recipe for target 'gcc_mswudll\wxtiff_tif_dirinfo.o' failed
mingw32-make: *** [gcc_mswudll\wxtiff_tif_dirinfo.o] Error 1

我已经为

设置了环境变量
WXCFG=C:\wxWidgets-3.1.0\lib\gcc_dll\mswu
WXWIN=C:\wxWidgets-3.1.0

我很确定您 运行 遇到了描述的问题 here

你可以

  1. 应用 here 中的补丁解决问题。
  2. 使用来自 git 的最新版本的 wxWidgets,因为该问题已在那里修复。
  3. 使用来自 MSYS2 或 MinGW64 的 MinGW 版本。尽管如果你走那条路,一定要使用最新版本,因为那些版本的 MinGW 直到最近都有不同的问题(至少对于 wxWidgets 的某些配置)。

希望对您有所帮助。