Fatal error c1041 невозможно открыть базу данных программы

Я использую Visual Studio 2013. Время от времени по проекту отказывается компилировать. Если я отменю какие-либо изменения, он все равно не скомпилируется. Я обнаружил, что воссоздание всего проекта работает. Я хотел бы на самом деле решить проблему, хотя. Я получаю ошибку:

1>Critic.cpp : fatal error C1041: cannot open program database ‘c:usersusernamedesktopprojectNameprojectNamex64debugvc120.pdb’; if multiple CL.EXE write to the same .PDB file, please use /FS

Кто-нибудь еще сталкивался с этим и нашел исправление?

Решение

У меня была эта проблема, потому что разные проекты в решении имели один и тот же промежуточный каталог.

$(Platform)$(Configuration) to $(Platform)$(Configuration)$(ProjectName)

свойства конфигурации-> общие-> промежуточный каталог

в каждом из проектов это решено.

Другие решения

в C / C ++ -> Общие Страница настроек для каждого проекта, настройка Мультипроцессорная компиляция возможность нет помог мне.

How to Fix Include Path Error in C/C++ Files using Visual Studio Code

я согласен с PThomasCS.

Сначала я попытался использовать совет Microsoft / FS (принудительная синхронная запись в PDB) :

Чтобы установить этот параметр компилятора в среде разработки Visual Studio

  1. Откройте диалоговое окно страниц свойств проекта. Для получения дополнительной информации см. Работа со свойствами проекта.
  2. Выберите папку C / C ++.
  3. Выберите страницу свойств командной строки.
  4. Измените свойство «Дополнительные параметры», чтобы включить / FS, а затем нажмите «ОК».

но это не сработало.

Я заметил, что Dropbox блокирует файл. Я остановил синхронизацию. После этого ошибка исчезла. Поэтому попробуйте закрыть / остановить любую программу, которая может заблокировать файлы.

Надеюсь это поможет.

Я нашел ту же проблему компиляции libkml на VS2013 (ошибка появляется конкретно на libkmlxsd проект внутри libkml решение).

Error 112 error C1041: cannot open program database ‘d:gstabelfalkermap2libkml-1.2.0msvcdebugvc120.pdb’; if multiple CL.EXE write to the same .PDB file, please use /FS d:gstabelfalkermap2libkml-1.2.0srcstdafx.cpp 1 1 libkmlxsd

/ FS (принудительная синхронная запись в PDB) флаг работает на меня. Но я должен был войти в все проекты внутри решений и перестроить все, чтобы оно заработало.

У меня была похожая проблема: репозитории c ++, которые могли бы работать нормально для других людей в моей команде, не собирались для меня должным образом (выдавали ошибки .PDB / FS, как упомянуто в вопросе), а иногда и связывали ошибки. Кто-то указал, что я клонировал один из репозиториев в папку в моем Dropbox. Перепробовав много других идей, я, наконец, сделал новый клон для местоположения без Dropbox, и решение компилируется без ошибок. Я подозреваю, что проблема может быть общей для других служб синхронизации файлов. (Коробка, гугл диск и тд), хотя я их не проверял.

Если у вас есть несколько проектов в решении, вам нужно добавить / FS к каждому проекту, чтобы он работал. Просто выберите проект-> свойства-> C / C ++ -> Командная строка -> Дополнительные параметры.

Работа с базами данных sqlite в редакторе VS Code #Shorts

если вы используете CUDA, то установите

Проект -> Свойства -> CUDA C / C ++ -> Хост -> Дополнительные параметры компилятора -> / FS

Как подсказывает сообщение об ошибке, эта ошибка возникает, когда несколько процессов одновременно пытаются получить доступ к файлу PDB проекта, что может произойти, если вы включите параллельную компиляцию (у меня была проблема со сторонним планировщиком сборки, я не уверен может ли это произойти также, когда сборка управляется собственным планировщиком Visual Studio).

Инструкции по использованию параметра компилятора / FS указывают вам правильное направление, хитрость заключается в том, чтобы опция компилятора всегда использовалась в вашей компиляции.

Если вы используете CMake создать файл решения, Вы должны указать флаг / FS в CMAKE_C_FLAGS и / или CMAKE_CXX_FLAGS (чтобы увидеть их, вам может понадобиться продвинутый флажок в CMake GUI) и восстановить решение.

Если вы используете CUDA, как Филиппо отмечено в его ответ , Вы должны убедиться, что компилятор хоста также установил этот флаг. Для решения, созданного в Visual Studio, установите флаг в CUDA C / C ++ -> Host -> Дополнительные параметры компилятора на странице свойств проекта.
Однако для сгенерированных CMake файлов решений у вас не будет никакой страницы свойств CUDA C ++, поэтому вместо этого вам нужно отредактировать конфигурацию CMake.
Просто добавьте флаг / FS к CMAKE__FLAGS как упомянуто выше и проверьте, что CUDA_PROPAGATE_HOST_FLAGS установлено на ВКЛ (что является его значением по умолчанию ).

Источник: web-answers.ru

Фатальная ошибка Visual Studio 2013 C1041 / FS

Я использую Visual Studio 2013. Каждый так часто проект отказывается компилировать. Если я отменю любые изменения, он все равно не будет компилироваться. Я обнаружил, что воссоздание всего проекта работает. Однако я бы хотел решить проблему. Ошибка, которую я получаю:

Читайте также:
Как пользоваться программой визио видео уроки

1>Critic.cpp : fatal error C1041: cannot open program database ‘c:usersusernamedesktopprojectNameprojectNamex64debugvc120.pdb’; if multiple CL.EXE write to the same .PDB file, please use /FS

Я пробовал следовать этим инструкциям безрезультатно: http://msdn.microsoft.com/en-us/library/dn502518.aspx Кто-нибудь еще столкнулся с этим и нашел исправление?

PThomasCS 17 дек. 2013, в 20:57
Поделиться

Печатание это дало мне идею. Я отключил Carbonite (онлайн-сервис резервного копирования) на случай, если он будет мешать, а затем перезапущен и мой проект скомпилирован. Если у вас возникла эта проблема, и вы обнаружили ее, вы можете отключить все, что может блокировать файлы на вашем компьютере.

PThomasCS 17 дек. 2013, в 19:53
Вы пробовали / FS, рекомендованный в сообщении об ошибке?
cup 17 дек. 2013, в 19:55
PThomasCS 17 дек. 2013, в 19:58
Удалите файлы * .pdb и перестройте.
Thomas Matthews 17 дек.

2013, в 20:35

Раньше такое случалось на VS10, особенно на многоядерных машинах, которые кешируют данные. Попробуйте установить% NUMBER_OF_PROCESSORS% в 1 в командной строке cmd и запустить VS оттуда. Тогда построй.

cup 17 дек. 2013, в 22:22

Я использую Perforce, и если pdb-файл был случайно зарегистрирован, но не возвращен, то может произойти ошибка, подобная этой. Возможно, Carbonite случайно создает резервную копию файла pdb и не дает вам доступа обратно? Контроль над исходным кодом, как правило, мой первый подозреваемый с такими проблемами.

Philip 09 янв. 2014, в 17:31
Показать ещё 4 комментария
Поделиться:
visual-studio-2013
compiler-errors

19 ответов

У меня была эта проблема, потому что разные проекты в решении имели один и тот же промежуточный каталог.

$(Platform)$(Configuration)
$(Platform)$(Configuration)$(ProjectName)

Свойства конфигурации | Генерал | Промежуточный каталог

в каждом из проектов это решено.

test 07 окт. 2014, в 11:04
Поделиться
Использование /FS работало для меня, пока мой SLN не стал еще больше; тогда мне это нужно было
kayleeFrye_onDeck 26 июль 2017, в 01:45

Согласно самой документации M $: «это может значительно увеличить сборку и не предотвращает все ошибки, которые могут возникнуть, когда несколько экземпляров cl.exe одновременно получают доступ к файлу PDB. Мы рекомендуем вам изменить решение так что независимые проекты пишут в отдельные промежуточные и выходные местоположения ». Поэтому я считаю, что это правильный ответ — не используйте один и тот же pdb для нескольких проектов — он не будет работать надежно.

jj99 22 авг. 2018, в 18:28

на странице настроек C/С++ → Общие для каждого проекта, настройка Multi_processor компиляции на Нет помогла мне.

Darren Evans 21 июнь 2014, в 18:18
Поделиться
Да, но это повредит времени компиляции 🙂
Evgenii Puchkaryov 20 окт. 2017, в 23:27

Я согласен с PThomasCS.

Сначала я попытался использовать совет Microsoft /FS (Force Synchronous PDB Writes):

Чтобы установить этот параметр компилятора в среде разработки Visual Studio

  1. Откройте диалоговое окно «Страницы свойств проекта». Для получения дополнительной информации см. Работа со свойствами проекта.
  2. Выберите папку C/C++.
  3. Выберите страницу свойств командной строки.
  4. Измените свойство «Дополнительные параметры», чтобы включить /FS, а затем нажмите «ОК».

но это не сработало.

Я заметил, что Dropbox блокирует файл. Я остановил синхронизацию. После этого ошибка исчезла. Поэтому попробуйте закрыть/остановить любую программу, которая может заблокировать файлы.

Надеюсь это поможет.

Maks 18 фев. 2014, в 14:45
Поделиться

У меня была аналогичная проблема: репозитории С++, которые могли бы отлично подойти для других людей в моей команде, не будут корректно построены для меня (давали ошибки PBC/FS, как упоминалось в вопросе), а иногда и ошибки ссылок. Кто-то указал, что я клонировал один из репозиториев в место в моем Dropbox. Попробовав много других идей, я, наконец, сделал новый клон для не-dropbox, и решение компилируется без ошибок. Я подозреваю, что проблема может быть общей для других служб синхронизации файлов. (Box, Google drive и т.д.), Хотя я их не тестировал.

user2373786 15 янв. 2017, в 22:25
Поделиться

Я обнаружил ту же самую проблему с компиляцией libkml на VS2013 (ошибка появляется конкретно в проекте libkmlxsd внутри решения libkml).

Error 112 error C1041: cannot open program database ‘d:gstabelfalkermap2libkml-1.2.0msvcdebugvc120.pdb’; if multiple CL.EXE write to the same .PDB file, please use /FS d:gstabelfalkermap2libkml-1.2.0srcstdafx.cpp 1 1 libkmlxsd

Флаг /FS (принудительный синхронный PDB Writes) работает для меня. Но мне нужно было установить все проекты внутри решений и перестроить все, чтобы они работали.

Gabriel C. Stabel 09 янв. 2014, в 19:22
Поделиться

Как подсказка сообщения об ошибке, эта ошибка возникает, когда несколько процессов пытаются получить доступ к файлу PDB проекта одновременно, что может произойти, если вы включите параллельную компиляцию (у меня возникла проблема с сторонним планировщиком сборки, m не уверен, что это может произойти также, когда сборка управляется собственным планировщиком Visual Studio).

Читайте также:
Программа которая совмещает фотографии

Инструкции по использованию параметра компилятора /FS указывают вам в правильном направлении, трюк заключается в том, что параметр компилятора всегда используется в вашей компиляции.

Если вы используете CMake для создания файла решения, вы должны указать /FS флаг в CMAKE_C_FLAGS и/или CMAKE_CXX_FLAGS (для их просмотра вам может потребоваться отметить флажок «Дополнительно» в графическом интерфейсе CMake) и регенерировать решение.

Если вы используете CUDA, а Fillippo отмечен в его ответе, вы должны убедиться, что компилятор хоста также устанавливает флаг. Для решения, созданного в Visual Studio, установите флаг в CUDA C/С++ → Host → Дополнительные параметры компилятора на странице свойств проекта. Однако для файлов решений, созданных с помощью CMake, у вас не будет страницы свойств CUDA С++, поэтому вам нужно отредактировать конфигурацию CMake. Просто добавьте флаг /FS в CMAKE__FLAGS , как указано выше, и убедитесь, что для параметра CUDA_PROPAGATE_HOST_FLAGS установлено значение ON (которое является значением по умолчанию).

Источник: overcoder.net

Fatal error c1041 cannot open program database

As the error message hints, this error happens when multiple processes try to access the project’s PDB file at the same time, which can happen if you enable parallel compilation (I had the problem with a third-party build scheduler, I’m not sure whether this can happen also when the build is managed by Visual Studio’s own scheduler).

The instructions to use the /FS compiler option point you in the right direction, the trick is making sure that the compiler option is always used in your compilation.

If you’re using CMake to generate the solution file, you should specify the /FS flag in the CMAKE_C_FLAGS and/or CMAKE_CXX_FLAGS (to see them you might need to tick the Advanced checkbox in the CMake GUI) and regenerate the solution.

If you’re using CUDA, as Fillippo noted in his answer, you need to make sure the host compiler sets the flag as well. For a Visual Studio-generated solution, set the flag in the CUDA C/C++ -> Host -> Additional Compiler Options in the project properties page.
For CMake-generated solution files, however, you won’t have any CUDA C++ properties page, so you need to edit the CMake configuration instead.
Just add the /FS flag to the CMAKE__FLAGS as mentioned above and check that CUDA_PROPAGATE_HOST_FLAGS is set to ON (which is its default value).

[1931/2320] Building NVCC (Device) object caffe2/CMakeFiles/torch_cuda.dir/__/aten/src/THC/torch_cuda_generated_THCTensorMath.cu.obj FAILED: caffe2/CMakeFiles/torch_cuda.dir/__/aten/src/THC/torch_cuda_generated_THCTensorMath.cu.obj cmd.exe /C «cd /D D:pytorchbuildcaffe2CMakeFilestorch_cuda.dir__atensrcTHC «C:Program Files (x86)Microsoft Visual Studio2019CommunityCommon7IDECommonExtensionsMicrosoftCMakeCMakebincmake.exe» -E make_directory D:/pytorch/build/caffe2/CMakeFiles/torch_cuda.dir/__/aten/src/THC/. «C:Program Files (x86)Microsoft Visual Studio2019CommunityCommon7IDECommonExtensionsMicrosoftCMakeCMakebincmake.exe» -D verbose_BOOL=OFF -D build_configuration_STRING=RelWithDebInfo -D generated_file_STRING=D:/pytorch/build/caffe2/CMakeFiles/torch_cuda.dir/__/aten/src/THC/./torch_cuda_generated_THCTensorMath.cu.obj -D generated_cubin_file_STRING=D:/pytorch/build/caffe2/CMakeFiles/torch_cuda.dir/__/aten/src/THC/./torch_cuda_generated_THCTensorMath.cu.obj.cubin.txt -P D:/pytorch/build/caffe2/CMakeFiles/torch_cuda.dir/__/aten/src/THC/torch_cuda_generated_THCTensorMath.cu.obj.RelWithDebInfo.cmake» THCTensorMath.cu THCTensorMath.cu C:/Users/cloud/AppData/Local/Temp/tmpxft_0000364c_00000000-6_THCTensorMath.cudafe1.cpp: fatal error C1041: cannot open program database ‘D:pytorchbuildcaffe2CMakeFilestorch_cuda.dir__atensrcTHCvc140.pdb’; if multiple CL.EXE write to the same .PDB file, please use /FS CMake Error at torch_cuda_generated_THCTensorMath.cu.obj.RelWithDebInfo.cmake:281 (message): Error generating file D:/pytorch/build/caffe2/CMakeFiles/torch_cuda.dir/__/aten/src/THC/./torch_cuda_generated_THCTensorMath.cu.obj
MAX_JOBS=8 REL_WITH_DEB_INFO=1 MSVC_Z7_OVERRIDE=0 USE_CUDA=1

Seems the /FS flag should be added properly in this case to avoid PDB write contention.

Как подсказка сообщения об ошибке, эта ошибка возникает, когда несколько процессов пытаются получить доступ к файлу PDB проекта одновременно, что может произойти, если вы включите параллельную компиляцию (у меня возникла проблема с сторонним планировщиком сборки, m не уверен, что это может произойти также, когда сборка управляется собственным планировщиком Visual Studio).

Инструкции по использованию параметра компилятора /FS указывают вам в правильном направлении, трюк заключается в том, что параметр компилятора всегда используется в вашей компиляции.

Если вы используете CMake для создания файла решения, вы должны указать /FS флаг в CMAKE_C_FLAGS и/или CMAKE_CXX_FLAGS (для их просмотра вам может потребоваться отметить флажок «Дополнительно» в графическом интерфейсе CMake) и регенерировать решение.

Если вы используете CUDA, а Fillippo отмечен в его ответе, вы должны убедиться, что компилятор хоста также устанавливает флаг. Для решения, созданного в Visual Studio, установите флаг в CUDA C/С++ → Host → Дополнительные параметры компилятора на странице свойств проекта.
Однако для файлов решений, созданных с помощью CMake, у вас не будет страницы свойств CUDA С++, поэтому вам нужно отредактировать конфигурацию CMake.
Просто добавьте флаг /FS в CMAKE__FLAGS , как указано выше, и убедитесь, что для параметра CUDA_PROPAGATE_HOST_FLAGS установлено значение ON (которое является значением по умолчанию).

Я использую Visual Studio 2013. Время от времени по проекту отказывается компилировать. Если я отменю какие-либо изменения, он все равно не скомпилируется. Я обнаружил, что воссоздание всего проекта работает. Я хотел бы на самом деле решить проблему, хотя. Я получаю ошибку:

Читайте также:
В какой программе делать проект на компьютере

1>Critic.cpp : fatal error C1041: cannot open program database ‘c:usersusernamedesktopprojectNameprojectNamex64debugvc120.pdb’; if multiple CL.EXE write to the same .PDB file, please use /FS

Я пытался следовать этим инструкциям безрезультатно: http://msdn.microsoft.com/en-us/library/dn502518.aspx

Кто-нибудь еще сталкивался с этим и нашел исправление?

Решение

У меня была эта проблема, потому что разные проекты в решении имели один и тот же промежуточный каталог.

$(Platform)$(Configuration) to $(Platform)$(Configuration)$(ProjectName)

свойства конфигурации-> общие-> промежуточный каталог

в каждом из проектов это решено.

Другие решения

в C / C ++ -> Общие Страница настроек для каждого проекта, настройка Мультипроцессорная компиляция возможность нет помог мне.

я согласен с PThomasCS.

Сначала я попытался использовать совет Microsoft / FS (принудительная синхронная запись в PDB) :

Чтобы установить этот параметр компилятора в среде разработки Visual Studio

  1. Откройте диалоговое окно страниц свойств проекта. Для получения дополнительной информации см. Работа со свойствами проекта.
  2. Выберите папку C / C ++.
  3. Выберите страницу свойств командной строки.
  4. Измените свойство «Дополнительные параметры», чтобы включить / FS, а затем нажмите «ОК».

но это не сработало.

Я заметил, что Dropbox блокирует файл. Я остановил синхронизацию. После этого ошибка исчезла. Поэтому попробуйте закрыть / остановить любую программу, которая может заблокировать файлы.

Надеюсь это поможет.

Я нашел ту же проблему компиляции libkml на VS2013 (ошибка появляется конкретно на libkmlxsd проект внутри libkml решение).

Error 112 error C1041: cannot open program database ‘d:gstabelfalkermap2libkml-1.2.0msvcdebugvc120.pdb’; if multiple CL.EXE write to the same .PDB file, please use /FS d:gstabelfalkermap2libkml-1.2.0srcstdafx.cpp 1 1 libkmlxsd

/ FS (принудительная синхронная запись в PDB) флаг работает на меня. Но я должен был войти в все проекты внутри решений и перестроить все, чтобы оно заработало.

У меня была похожая проблема: репозитории c ++, которые могли бы работать нормально для других людей в моей команде, не собирались для меня должным образом (выдавали ошибки .PDB / FS, как упомянуто в вопросе), а иногда и связывали ошибки. Кто-то указал, что я клонировал один из репозиториев в папку в моем Dropbox. Перепробовав много других идей, я, наконец, сделал новый клон для местоположения без Dropbox, и решение компилируется без ошибок. Я подозреваю, что проблема может быть общей для других служб синхронизации файлов. (Коробка, гугл диск и тд), хотя я их не проверял.

Если у вас есть несколько проектов в решении, вам нужно добавить / FS к каждому проекту, чтобы он работал. Просто выберите проект-> свойства-> C / C ++ -> Командная строка -> Дополнительные параметры.

если вы используете CUDA, то установите

Проект -> Свойства -> CUDA C / C ++ -> Хост -> Дополнительные параметры компилятора -> / FS

Как подсказывает сообщение об ошибке, эта ошибка возникает, когда несколько процессов одновременно пытаются получить доступ к файлу PDB проекта, что может произойти, если вы включите параллельную компиляцию (у меня была проблема со сторонним планировщиком сборки, я не уверен может ли это произойти также, когда сборка управляется собственным планировщиком Visual Studio).

Инструкции по использованию параметра компилятора / FS указывают вам правильное направление, хитрость заключается в том, чтобы опция компилятора всегда использовалась в вашей компиляции.

Если вы используете CMake создать файл решения, Вы должны указать флаг / FS в CMAKE_C_FLAGS и / или CMAKE_CXX_FLAGS (чтобы увидеть их, вам может понадобиться продвинутый флажок в CMake GUI) и восстановить решение.

Если вы используете CUDA, как Филиппо отмечено в его ответ , Вы должны убедиться, что компилятор хоста также установил этот флаг. Для решения, созданного в Visual Studio, установите флаг в CUDA C / C ++ -> Host -> Дополнительные параметры компилятора на странице свойств проекта.
Однако для сгенерированных CMake файлов решений у вас не будет никакой страницы свойств CUDA C ++, поэтому вместо этого вам нужно отредактировать конфигурацию CMake.
Просто добавьте флаг / FS к CMAKE__FLAGS как упомянуто выше и проверьте, что CUDA_PROPAGATE_HOST_FLAGS установлено на ВКЛ (что является его значением по умолчанию ).

  • Remove From My Forums

Question

First reported on StackOverflow, as I cannot insert link here, here is the details: I use ninja as
the build tool of cmake , ninja build
parallelly. When build in the physical machine, it compiles without any problem, but in a Windows docker container, it reports:

fatal error C1041: cannot open program database ‘blabla.pdb’; if multiple CL.EXE write to the same .PDB file, please use /FS

The compiler is MSVC 2015, but the /FS seems
a 2012 or 2013 option, after add /FS to
the CXX flags:

The C++ compiler «C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/cl.exe» is not able to compile a simple test program.

Источник: oshibochki.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru