我正在尝试使用VC 2013编译同时使用libyara和protobufs的程序。我静态编译了libyara库,它可以很好地编译到我的程序中。一旦我为我的protobufs添加头文件,事情就会很糟糕......快。我遇到的问题与看起来不正确的标题有关,但我会假设MS提供的头文件是正确的。这里有一个我不知道的伎俩吗?这是编译的部分输出:
1>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xtgmath.h(214): warning C4602: #pragma pop_macro : 'new' no previous #pragma push_macro for this identifier
1>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xtgmath.h(215): warning C4193: #pragma warning(pop) : no matching '#pragma warning(push)'
1>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xtgmath.h(216): warning C4161: #pragma pack(pop...) : more pops than pushes
1>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\cmath(23): error C2061: syntax error : identifier 'abs'
1>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\cmath(23): error C2059: syntax error : ';'
1>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\cmath(23): error C2061: syntax error : identifier 'acos'
1>C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\cmath(23): error C2061: syntax error : identifier 'asin'
有关如何解决此问题的任何建议?这与C库(libyara)和c ++库(protobuf)的混合有关吗?
答案 0 :(得分:0)
原来这是混合C和C ++代码的问题。解决方案是将.c文件的文件扩展名更改为.cpp,以便MSVC将所有内容都视为C ++。