在 CPP 项目和从 wsdl 文件生成的 C 中预编译 header

Precompile header in CPP project and C generated from wsdl file

我正在 CPP 中创建简单的 Web 服务客户端。我在 svcutil ans wsutil 实用程序的帮助下从 WSDL 生成了源文件。最后我得到了网络服务接口 headerC 文件。

当我将 C 文件包含到使用预编译 header 的控制台应用程序时,我收到消息:

Error   3   error C1853: 'Debug\TestLib3.pch' precompiled header file is from a previous version of the compiler, or the precompiled header is C++ and you are using it from C (or vice versa)  

如何解决这个问题?

C 编译器无法使用由 C++ 编译器生成的 .pch 文件。两个基本选项:

  • 将 .c 文件重命名为 .cpp,可能适用于自动生成的源文件。

  • 右击解决方案资源管理器中的.c文件window,属性,C/C++,预编译头,"Precompiled Header"选项。将其更改为 "Not using"。您可能还需要修改 #includes .h 文件的 C++ 源文件,它可能需要 extern "C" {} 围绕 #include 指令,以便 C++ 编译器知道 .h 文件包含 C 声明。当您收到显示函数名称损坏的链接器错误时,您就会知道这是必需的。