在Visual Studio

时间:2017-11-07 09:27:27

标签: c++ visual-studio precompiled-headers

如何找不到错误" LNK4206预编译类型信息"在具有共享预编译头的解决方案中被阻止?

我尝试配置visual studio 2015 update 3解决方案,所有项目共享相同的预编译头,以减少构建时间。预编译头部位于单独的项目中,并在解决方案中的其他项目(以及其他解决方案)可访问的位置上构建.pch文件和.lib文件。这将我们的主库的构建时间从10分钟缩短到5分钟,与其他解决方案相比可以节省成本。

但是,这也会导致预编译的头文件.pdb文件出现问题,因为每个项目都会删除此文件作为预编译步骤。针对此问题的建议解决方案on stackoverflowon msdn是将.pdb文件复制为预编译步骤。但是我无法使其工作(可能是由于在自动删除之前执行了复制步骤)。

修复pdb问题的替代解决方案是设置/ C7标志。对于调试版本,这会导致链接警告警告LNK4206:未找到预编译的类型信息; ' ... \ MSV \ PCH \ 64 \调试\ StdAfx.obj的'没有链接或覆盖;链接对象好像没有调试信息'。这是不可接受的,因为在调试会话期间确实缺少大多数调试信息。在msdn上,我找到this article关于/ Yi选项,但不清楚这是否能解决问题(LNK4206未提及),也不清楚符号变量的值应该是什么(必须手动添加所有缺失的符号或只有1个任意符号)?

欢迎任何线索。

0 个答案:

没有答案