ССЫЛКА: фатальная ошибка LNK1104: не удается открыть файл 'MSVCRTD.lib'

Я новичок в C++. Я получаю ошибку LINK :fatal error LNK1104: cannot open file 'MSVCRTD.lib' когда я пытаюсь отладить любой проект в Microsoft Visual C++ 2010 Express. Я искал в Stackru и Google то, что я должен делать, но не смог найти ответ. Я понял, что файл msvcrtd.lib должен находиться в карте \Microsoft Visual Studio 10.0\VC\lib, но этот файл не существует. Что я должен делать?

20 ответов

Для бедных людей, которые борются с этим, после часа исследований я нашел решение для моей Visual Studio Enterprise 2017:

Сначала давайте найдем, где находится файл вашей библиотеки:

С помощью проводника Windows перейдите в каталог, в котором установлена ​​Visual Studio (по умолчанию: C:\Program Files (x86)\Microsoft Visual Studio) и выполните поиск по msvcrtd.lib.

Я нашел мой, чтобы быть здесь:

C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.15.26726\lib\onecore\x86

Быстрое исправление (только для одного проекта):

  1. Щелкните правой кнопкой мыши по вашему проекту, выберите свойства, перейдите к Linker, добавьте этот путь в Дополнительные каталоги библиотек.

Постоянное исправление (для всех проектов)

  1. Открыть проект
  2. перейдите к View > Property Manager (это может быть в других окнах)
  3. Разверните все папки и выберите несколько "Microsoft.cpp.Win32.user" и "Microsoft.cpp.64.user"

  1. Щелкните правой кнопкой мыши и перейдите к свойствам
  2. Перейдите в каталоги VC++

  3. Добавьте путь к каталогам библиотеки по умолчанию

Зайдите в свойства вашего проекта, выберите Linker слева. Добавьте это в "Дополнительные каталоги библиотек":

"(Your Visual Studio Path)\VC\lib"

Например:

C:\Program Files\Microsoft Visual Studio 10.0\VC\lib

Я столкнулся с этой проблемой при компиляции примера приложения с использованием VS2017 Надеюсь, это поможет

В некоторых диалоговых окнах свойств в свойствах проекта есть флажок "Наследовать от родительского или проекта по умолчанию". Убедитесь, что флажок установлен для окон свойств " Включить" и " Каталоги библиотеки" и, конечно, для окна " Дополнительные зависимости".

Если вы используете VS2017, пожалуйста, прочитайте его. Или просто проигнорируйте этот ответ... Он может быть недействительным для другой версии VS.

Не доверяйте никому, кто сказал вам, чтобы добавить путь к lib.

Вот предложения:

  • [BEST] Вам просто нужно установить их через VS_installer (большинству из нас просто нужно x86/x64 версия ниже)
    • VC++ 2017 version version_numbers Libs для Spectre [(x86 и x64) | (ARM) | (ARM64)]
    • Visual C++ ATL для [(x86/x64) | ARM | ARM64] с призраками
    • Visual C++ MFC для [x86/x64 | ARM | ARM64] с призраками
  • [НАИВ] или отключить Spectre Вариант для каждого решения (почему нам так сложно глобально отключить его)
  • [СМЕХ] Или никогда не используйте VS2017

Это вина VisualStudioTeam, и Microsoft виновата.

Зачем?

Вы не можете сделать глобальную конфигурацию, чтобы отключить /QSpectreи IDK, когда и почему VS2017 включит его за один день. Так что лучший способ это установить Spectre? ahhha?

Для VS 2019 функция смягчения последствий включена по умолчанию. Таким образом, правильный способ решить эту проблему - установить VC++ Libs для Spectre.

Но, чтобы быстро решить проблему, вы можете отключить Призрачное смягчение

Project Properties -> C/C++ -> Code Generation -> Spectre Mitigation -> Disabled

https://devblogs.microsoft.com/cppblog/spectre-mitigations-in-msvc/

Я столкнулся с этим вопросом. Файл существовал на моей машине, он был в пути поиска. Я был озадачен, так как результат ошибки действительно бесполезен. В моем случае я включил смягчение Spectre, но не загрузил библиотеки времени выполнения для Spectre. Как только я сделал загрузку, все было в порядке с миром. Я должен был установить это на своих серверах сборки CI, так как эти библиотеки не установлены с VS по умолчанию.

Я решил эту проблему, вам нужно установить все спектры lib.Vistual Studio Installer-> Modify-> Component-> Любой спектр lib. Это решение может быть адаптировано к любому проекту.

Для меня эта проблема возникает после установки (Windows Driver Kit): https://docs.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk

Удаление это решает проблему. Просто публикация здесь как связанная проблема для людей, ищущих решения: После установки WDK VC++ не работает

Сценарий:

  1. Windows 10 с Visual Studio 2017 (установка FRESH).

  2. Проект 'C' (ССЫЛКА: фатальная ошибка LNK1104: не удается открыть файл ' MSVCRTD.lib ').

Разрешить:

  1. Запустите " Установщик Visual Studio ".

  2. Нажмите кнопку "Изменить".

  3. Выберите " Разработка рабочего стола с C++ ".

  4. В разделе "Сведения об установке" (обычно на правой боковой панели) выберите:

    4.1. VC++ 2015.3 v14.00 (v140) набор инструментов для рабочего стола.

    • Версия набора инструментов в 4.1. это только для примера.
  5. Нажмите кнопку "Изменить", чтобы применить изменения.
  6. Щелкните правой кнопкой мыши "SomeProject" -> "Свойства" -> " Линкер " -> " Общие " -> " Дополнительные каталоги библиотек ": $ (VCToolsInstallDir) \ lib \ x86

    (!!! для проекта x64: "Дополнительные каталоги библиотек": $(VCToolsInstallDir)\lib\x64!!!)

Также стоит проверить, что файл MSVCRTD.lib присутствует в "C:\Program Files\Microsoft Visual Studio 10.0\VC\lib" для x64 и в C:\Program Files(x86)\Microsoft Visual Studio 10.0\VC\lib для 32 бит. Иногда VS может быть установлен неправильно или эти файлы могут быть удалены случайно.

У меня только что была эта ошибка, в моем случае перестройка проекта, в то время как ничего больше не работала для меня. Вот моя ситуация. Visual Studio разбилась, и мне пришлось переустановить, и мой новый путь установки отличается от предыдущего. тогда у меня была эта ошибка

ошибка показала, что библиотека находится по адресу

D:\program\Microsoft Visual Studio\...

пока это должно быть

D:\program files\Microsoft Visual Studio\...

как я уже сказал, я просто перестроил его, и это сработало для меня, и если у вас есть проект с несколькими решениями, вам нужно перестроить все решение

Я решил проблему, добавив #using <mscorlib.dll> в основном файле

Это указывает на то, что Visual Studio не удалось найти lib (Библиотека) каталог, который содержит msvcrtd.lib,

ВАЖНО: это lib Каталог также содержит компоновщики, необходимые во время процесса компиляции.

Итак, все, что вам нужно сделать, это переопределить расположение каталога библиотеки. Вы можете сделать это с помощью переменных среды.

Я обратился к этой публикации Stackru за помощью. Согласно опубликованному ответу, переменная среды LIB относится к пути, где расположены библиотеки линкеров. Почему этот метод лучше? Потому что это будет применяться ко всем проектам, а не только к конкретному проекту. Кроме того, вам не нужно ничего загружать. Это просто работает...

Выполните следующие шаги, чтобы достичь этого:

ШАГ-1: Поиск "msvcrtd.lib" в строке поиска.

ШАГ-2: Нажмите "Открыть местоположение файла" (доступно в контекстном меню)

ШАГ-3: Скопируйте адрес каталога из адресной строки.

ШАГ 4: Найдите "Среда" на панели задач и нажмите "Изменить системные переменные среды".

ШАГ 5: Нажмите кнопку "Переменные среды...".

ШАГ-6: В разделе "Системные переменные" нажмите кнопку "Создать...". Диалог появится.

ШАГ-7: В диалоговом окне введите следующее:

  • Имя переменной: LIB
  • Значение переменной: [каталог, который вы скопировали в "ШАГ-3"]

И нажмите "ОК"

Теперь все готово!

Я столкнулся с этим с помощью Visual Studio 2017. Я попробовал решения, предложенные здесь, с явным добавлением путей к месту расположения файла MSVCRT.lib. Но я чувствовал, что это, вероятно, не правильный подход, потому что ранее в течение последних нескольких недель это не было проблемой с моим проектом.

После проб и ошибок я обнаружил, что если я оставлю пустое или пустое значение в разделе Linker -> Input, это выдаст мне ошибку о LNK1104: невозможно открыть файл 'MSVCRT.lib'. В конце концов я понял, что вместо этого я должен оставить это значение.

В проекте Visual Studio щелкните правой кнопкой мыши элемент проекта на панели обозревателя решений (не само решение, которое является верхним элементом), затем выберите "Свойства". Оттуда сделайте следующее:

Linker -> Input: % (AdditionalDependencies)

Эта дополнительная информация может быть полезна, если вы попали в ситуацию так же, как я. Я обнаружил, что я не должен помещать какие-либо несистемные пути к библиотекам в раздел Linker -> Input. С моим проектом я пытался скомпилировать с внешними.lib файлами. Ранее у меня было значение в этом разделе ввода, например: $ (ProjectDir) lib; % (AdditionalDependencies), но это приводит к другим проблемам. Я обнаружил, что правильное место (кажется, пока) для размещения путей для ссылки на внешние файлы.lib в проекте C/C++ в Visual Studio 2017 находится здесь:

Каталоги VC++ -> Каталоги библиотек: $ (ProjectDir) lib; $(LibraryPath)

Обратите внимание, что значение $(LibraryPath) будет включать дополнительные значения, такие как унаследованные от родителей. Мой проект папок содержал папку с именем 'lib', поэтому у меня было первое значение перед точкой с запятой.

Я получил немного другую ошибку

LNK1104 не может открыть файл 'MSVCURTD.lib'

Обратите внимание, что это msvcUrtd (не msvcrtd), но файл не найден в моей системе.

Решил это, установив следующие параметры:

Project Properties
 General
  Character Set: Not Set
  Common Language Runtime Support: Common Language Runtime Support (/clr)

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

Для Visual Studio 2017 Перейдите в свойства своего проекта, выберите Linker слева. Добавьте это в "Дополнительные каталоги библиотек":

C: \ Program Files (x86) \ Microsoft Visual Studio \ Shared \ 14.0 \ VC \ lib

В VS2017 (Сообщество / Предприятие /Ultimate/Professional):

Добавьте путь (и) к папке (папкам), которые включают в себя желаемый файл (ы).lib, по следующему пути в VS:

(Щелкните правой кнопкой мыши) Проект (в обозревателе решений)-> Свойства-> Свойства конфигурации-> Компоновщик-> Общие-> Дополнительные каталоги библиотеки

Если существует более одного файла ".lib", используйте ';' чтобы разделить их, в противном случае нажмите на поле редактирования, соответствующее "Дополнительные каталоги библиотек", затем нажмите "" в выпадающем меню и добавьте все нужные файлы ".lib" в открывшемся окне один за другим и в простой для обработки форме.

Приведенный выше ответ был не совсем точным для меня. У меня установлен VS2010 Ultimate, и рассматриваемый файл не находится в папке Visual Studio 10.0\VC. Скорее я нашел его в папке Visual Studio 9.0\VC. Так что, если это так для кого-то, следуйте указаниям по изменению компоновщика, но вместо этого используйте папку Visual Studio 9.0\VC. Это сработало для меня.

Я включил следующий путь

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\lib\x86 и
C: \ Local\boost_1_64_0\lib64-MSVC-14,1

к

свойства проекта-> компоновщик-> дополнительные каталоги

Нажмите здесь: изображение показывает связь буста и MSVC2017

Другие вопросы по тегам