C++ Visual Studio 2013致命错误C1041/FS

C++ Visual Studio 2013致命错误C1041/FS,c++,compiler-errors,visual-studio-2013,C++,Compiler Errors,Visual Studio 2013,我正在使用Visual Studio 2013。偶尔项目会拒绝编译。如果我撤消任何更改,它仍然不会编译。我发现重新创建整个项目是可行的。不过,我想实际解决这个问题。我得到的错误是: 1>Critic.cpp : fatal error C1041: cannot open program database 'c:\users\username\desktop\projectName\projectName\x64\debug\vc120.pdb'; if multiple CL.EXE w

我正在使用Visual Studio 2013。偶尔项目会拒绝编译。如果我撤消任何更改,它仍然不会编译。我发现重新创建整个项目是可行的。不过,我想实际解决这个问题。我得到的错误是:

1>Critic.cpp : fatal error C1041: cannot open program database 'c:\users\username\desktop\projectName\projectName\x64\debug\vc120.pdb'; if multiple CL.EXE write to the same .PDB file, please use /FS
我尝试过按照这些说明操作,但没有效果:


是否有其他人遇到过此问题并找到了修复方法?

我在VS2013上编译时发现了相同的问题(该错误特别出现在libkml解决方案中的libkmlxsd项目中)


国旗对我有用。但我必须在解决方案中设置所有项目,并重新构建所有项目,以使其正常工作。

我同意PThomasCS

首先,我尝试使用Microsoft advice:

在Visual Studio开发环境中设置此编译器选项

  • 打开项目的“属性页”对话框。有关详细信息,请参见使用项目属性
  • 选择C/C++文件夹
  • 选择命令行属性页
  • 修改“附加选项”属性以包含/FS,然后选择“确定”
  • 但它不起作用

    我注意到dropbox锁定了文件。我停止了同步。之后,错误消失了。因此,尝试关闭/停止任何可能锁定文件的程序


    希望这能有所帮助。

    我也遇到了同样的问题

    删除完整的$(IntDir)对我很有效。

    这里也有同样的问题

        STRING(REGEX REPLACE "/Zi" "/Z7" CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}")
        STRING(REGEX REPLACE "/Zi" "/Z7" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
    
    • /财政司司长没有工作
    • 删除VS2013文件无效
    • 重新启动计算机不起作用
    • 从项目中删除头文件和源文件并重新添加它们不起作用
    • 关闭google drive和dropbox不起作用

    我必须删除损坏的副本并使用备份副本-通常每天,我都会将工作文件夹的副本放入每个项目的C/C++->General设置页面中的备份驱动器中,将多处理器编译选项设置为对我有帮助。

    我遇到了这个问题,因为解决方案中的不同项目具有相同的中间目录

    改变

    $(Platform)\$(Configuration)\
    

    配置属性|常规|中间目录


    在每个项目中都解决了它。

    如果解决方案中有多个项目,则需要向每个项目添加/FS以使其正常工作。只需选择项目->属性->C/C++->命令行->其他选项。

    对我来说,解决这个问题的方法是手动终止mspdbsrv进程。其中的某些东西有时不能很好地处理并发构建,并陷入错误状态。
    下一个版本重新启动了pdb服务器,一切恢复正常。

    我正在运行备份服务。我的问题是,当编译器试图写出.pdb文件时,备份服务一直在备份上一次编译中的新.pdb文件。通过从备份中排除.pdb文件,我彻底解决了这个问题


    这类问题很难追踪,因为它是间歇性的。备份完成后,当编译器创建新的.pdb文件时,不再存在冲突,因此您可能认为其他一些解决方案可行。

    需要将/FS标记放在链接器命令行中。工作良好

    如果使用CUDA,则设置


    Project->Properties->CUDA C/C++->Host->Additional Compiler Options->/FS

    删除整个调试目录。

    我也遇到了这个问题,我通过从Project目录中删除.pdb文件并重新编译解决了这个问题。

    我也遇到了同样的问题,该项目的中间目录为空。因此,被接受的解决方案对我不起作用


    我通过在错误的项目中进行清理和构建,错误的

    < P>我有一个类似的问题:C++对我的团队中的其他人建立的罚款将不会为我正确构建(给出了PDB/FS错误,如问题中提到的),有时也会链接错误。有人指出,我正在将一份回购协议克隆到我的Dropbox中的某个位置。在尝试了许多其他的想法之后,我终于在一个非dropbox位置创建了一个新的克隆,解决方案编译时没有错误。我怀疑这个问题可能是其他文件同步服务的常见问题。(Box、Google drive等),尽管我还没有测试它们。

    正如错误消息所提示的,当多个进程试图同时访问项目的PDB文件时会发生此错误,如果启用并行编译,则会发生此错误(我遇到了第三方生成计划程序的问题,我不确定当生成由VisualStudio自己的计划程序管理时是否也会发生这种情况)

    使用/FS编译器选项的说明为您指明了正确的方向,诀窍是确保编译器选项始终用于编译

    如果使用生成解决方案文件,则应在
    CMAKE\u C\u标志
    中指定/FS标志和/或
    CMAKE\u CXX\u标志
    (要查看这些标志,可能需要勾选CMAKE GUI中的“高级”复选框)并重新生成解决方案

    Error   112 error C1041: cannot open program database 'd:\gstabel\falkermap2\libkml-1.2.0\msvc\debug\vc120.pdb'; if multiple CL.EXE write to the same .PDB file, please use /FS d:\gstabel\falkermap2\libkml-1.2.0\src\stdafx.cpp   1   1   libkmlxsd
    
    如果您正在使用CUDA,如中所述,您需要确保主机编译器也设置了该标志。对于Visual Studio生成的解决方案,请在项目属性页的CUDA C/C++->host->Additional compiler选项中设置该标志。 然而,对于CGED生成的解决方案文件,您将没有任何CUDA C++属性页,因此需要编辑CMAGE配置。
    只需将/FS标志添加到上面提到的
    CMAKE{C,CXX}\u标志
    ,并检查
    CUDA\u PROPAGATE\u HOST\u标志
    是否设置为ON()。

    我遇到了同样的问题,解决方案非常简单:磁盘已满

    但在这种情况下,错误消息没有太大帮助。。。
    我是通过使用进程监视器找到的。

    我在构建Qt C时遇到了这个问题
        STRING(REGEX REPLACE "/Zi" "/Z7" CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}")
        STRING(REGEX REPLACE "/Zi" "/Z7" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")