用VC 2013编译Protobufs和Libyara

Compiling Protobufs and Libyara with VC 2013

本文关键字:Libyara Protobufs 编译 VC 2013      更新时间:2023-10-16

我正在尝试使用 VC 2013 编译一个同时使用 libyara 和 protobufs 的程序。我静态编译了libyara库,它可以很好地编译到我的程序中。一旦我为我的原型添加了头文件,事情就会变得很糟糕......快。我遇到的问题与看似不正确的标头有关,但我会假设 MS 提供的标头文件是正确的。这里有我缺少的技巧吗?这是编译的部分输出:

1>C:Program Files (x86)Microsoft Visual Studio 12.0VCincludextgmath.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.0VCincludextgmath.h(215): warning C4193: #pragma warning(pop) : no matching '#pragma warning(push)'
1>C:Program Files (x86)Microsoft Visual Studio 12.0VCincludextgmath.h(216): warning C4161: #pragma pack(pop...) : more pops than pushes
1>C:Program Files (x86)Microsoft Visual Studio 12.0VCincludecmath(23): error C2061: syntax error : identifier 'abs'
1>C:Program Files (x86)Microsoft Visual Studio 12.0VCincludecmath(23): error C2059: syntax error : ';'
1>C:Program Files (x86)Microsoft Visual Studio 12.0VCincludecmath(23): error C2061: syntax error : identifier 'acos'
1>C:Program Files (x86)Microsoft Visual Studio 12.0VCincludecmath(23): error C2061: syntax error : identifier 'asin'

关于如何解决此问题的任何建议?这与C库(libyara)和c++库(protobuf)的混合有关吗?

事实证明,

这是混合 C 和 C++ 代码的问题。解决方案是将我的 .c 文件的文件扩展名更改为 .cpp,以便 MSVC 将所有内容视为C++。