cl.exe锁定obj和pdb文件

时间:2018-06-19 04:13:09

标签: c++ visual-studio pdb-files object-files cl

所以我有一个名为build.bat的Windows批处理文件,我使用它来使用CL.exe从命令行构建我的C / C ++应用程序(我目前正在使用Visual Studio 2017)。我的问题基本上是,每隔一段时间cl.exe就会锁定编译器创建的.obj文件,否则会锁定vc140.pdb(visual studio的调试数据库)。这使它成为我所需要的,感觉就像垃圾邮件一样,直到最后这个错误消失并且代码最终编译完毕。我在谷歌上做了大量的搜索,没有一个解决方案有效。建议的解决方案之一是使用-FS(强制同步PDB写入)作为编译器选项之一,但仍然无法正常工作。我每次选择编译时都尝试删除.pdb和.obj,但仍然无法正常工作。为了说清楚我还没有找到重建这个错误的方法,它只发生在6个版本之后,如果有人有修复的解决方案或任何想法,我将非常感激。

当我收到有关vc140.pdb的错误时,这是​​缓冲区输出:

[vcvarsall.bat] Environment initialized for: 'x64'
main.cpp
e:\work\math\code\main.cpp: fatal error C1041: cannot open program database 'E:\work\math\build\vc140.pdb'; if multiple CL.EXE write to the same .PDB file, please use /FS
exited with code 0

当我收到抱怨.obj文件

的错误时,这是​​缓冲区输出
[vcvarsall.bat] Environment initialized for: 'x64'
main.cpp
e:\work\math\code\main.cpp : fatal error C1083: Cannot open compiler generated file: 'e:\work\math\build\main.obj': Permission denied
exited with code 0

这是build.bat文件:

@echo off

if not defined DevEnvDir (
call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x64
)
pushd ..\build\

cl -FC -nologo -Zi ..\code\main.cpp

popd

以下是我用作尝试重新创建问题的测试的主文件:

#include <stdio.h>

int main(int argc, char* argv[])
{
    printf("Test123\n");

    return 0;
}

再次感谢您的帮助,非常感谢。

0 个答案:

没有答案