错误:“警告C4005:'SWIGTEMPLATEDISAMBIGUATOR':宏重新定义”

时间:2017-03-07 15:17:14

标签: visual-studio visual-studio-2015 swig

我正在尝试编译一个SWIG项目,它会继续发出这样的错误:

  

swig_wrap.cpp(55):警告C4005:'SWIGTEMPLATEDISAMBIGUATOR':宏   重新定义

这样的错误:

  

致命错误C1010:查找预编译时意外结束文件   头。你忘了在你的来源添加'#include“stdafx.h”'吗?

编译器

  • Visual Studio 2015 + Update 3。
  • SWIG v3.0.12

2 个答案:

答案 0 :(得分:2)

将以下内容添加到.i文件中:

%begin %{
#include "stdafx.h"
%}

本节将代码注入文件顶部生成的包装器中,您不需要禁用预编译的头文件。

答案 1 :(得分:1)

在Visual Studio中,右键单击swig生成的.cpp包装器文件,然后选择“Not Using Precompiled Headers”。

就我而言,swig自动生成的包装文件是swig_wrap.cpp

您可以为整个项目保留预编译的标题。

有关详细信息,请参阅nabble.com和Fatal error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "stdafx.h"' to your source?

enter image description here

附录A:可以修复SWIG以避免这种情况!

解决此问题的另一种方法是手动将“stdafx.h”行添加到此文件的开头,但不幸的是,每次运行swig时,它都会删除此修复程序!有一种方法可以解决这个问题,但它根本不明显(见另一个答案)。