以前用 Visual Studio 2013 编译 wxWidgets 非常顺利,但是现在用 Visual Studio 2015 (通过 nmake 命令)编译的时候,出现以下错误:
tif_win32.c
C:\Program Files (x86)\Windows Kits\10\include\10.0.10150.0\ucrt\stdio.h(1925): warning C4005: 'snprintf': macro redefinition
C:\Lib\wxWidgets\v3.0.2\src\tiff\libtiff\tif_config.h(367): note: see previous definition of 'snprintf'
C:\Program Files (x86)\Windows Kits\10\include\10.0.10150.0\ucrt\stdio.h(1927): fatal error C1189: #error: Macro definition of snprintf conflicts with Standard Library function declaration
NMAKE : fatal error U1077: 'D:\Apps\x86\Microsoft\Visual_Studio\v14.0\VC\BIN\cl.EXE' : return code '0x2'
Stop.
C:\Lib\wxWidgets\v3.0.2\build\msw>
这是一个已知的 bug,官方已经解决:
#16854: fix for snprintf support in vc2014/visual studio 2015
这个链接上提供的 patch 可以解决这个问题:msw_vc14_compiler_fixes.diff
按照 patch 修改源码(或直接 apply this patch)即可解决 Visual Studio 2015 编译的错误: