【问题标题】:Precompiled header is from previous version of compiler预编译头来自以前版本的编译器
【发布时间】:2016-11-02 19:06:32
【问题描述】:

如何在大型 C++ 代码库中使用 c 库?

我找到了一些不错的 c library,而且由于 c 和 c++ 兼容,这对我来说太棒了。我有很多项目的大型代码库,我想在其中一个项目中使用该库。

所以我在 C 驱动器上构建了库,之后我将它与我想使用的项目一起放入文件夹中,更改了项目属性中的引用以定位该库等。

之后,我从我的 send.c 文件中的一个 cpp 文件函数中调用了其中一个函数,其中包含一些库文件,并在构建过程中出错

Precompiled header is from previous version of compiler 

所以我想问:

  1. 我应该单独构建库还是可以像我一样这样做?
  2. 我应该如何修复这些错误? (我尝试从 .c 更改为 .cpp 但库有很多错误)
  3. 我应该把图书馆放在哪里?有什么好的约定吗?因为现在它只是粘贴在项目旁边
  4. 如果可以,以前的编译如何影响新的构建?!它不会只是再次预编译它吗?
  5. 在这个庞大的代码库中,我看不到有多少库像这个一样自主。我可以以某种方式将其转换为一个 .lib 文件,并通过导入它以某种方式更轻松地使用它吗?由于我不会更改它,因此它将始终仅用于消息发送。像这样,每个项目都需要配置很多东西,将来可能会用到它

谢谢!

注 1: 我在 Windows Server 2012 R2 上使用 Visual Studio 2015。

【问题讨论】:

  • 由于 c 和 c++ 兼容,这对我来说太棒了,坏消息:这是错误的 :(
  • 使用相同的编译器构建所有内容。有时,即使是服务包差异也不适用于预编译的标头。
  • 它不会只是再次预编译它吗?如果你删除旧的 .pch 文件,你可以让它这样做。

标签: c++ c visual-studio-2015 compiler-errors coding-style


【解决方案1】:

通过以下步骤解决了这个问题:

  1. 关闭预编译头文件
  2. 已删除 .pch 文件

由于这并没有解决错误,我还做了一些其他事情:

  1. send.c 的扩展名更改为 send.cpp
  2. 属性->C/C++->高级->编译为 C 代码 (/TC)
  3. 属性->常规->字符集改为使用多字节字符集

这解决了我的问题:)

【讨论】:

  • 投反对票,因为它没有解释如何做他提到的任何事情。
猜你喜欢
  • 2021-11-26
  • 2023-03-19
  • 1970-01-01
  • 2011-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-27
  • 2010-11-20
相关资源
最近更新 更多