Не удается открыть файл msmpi lib
Для того чтобы начать работу с библиотекой MPICH2, необходимо скачать совместимую с используемой операционной системой версию продукта здесь. Для ОС Windows – это установочный пакет формата MSI, поэтому инсталляция библиотеки проходит стандартным образом. Важно, что установку в этом случае надо проводить для всех пользователей системы.
Теперь необходимо добавить два основных исполняемых файла библиотеки mpiexec.exe и smpd.exe в список правил брандмауэра. Это необходимо, поскольку, при организации кластера используется сеть и доступ к каждому узлу сети должен быть разрешен для компонентов MPI. Конкретные настройки зависят от типа используемого брандмауэра.
Однако, это возможно сделать, используя консольную команду [путь_к_библиотеке]/bin/mpiexec -register.
Установка практически завершена. Осталось проверить правильность всех сделанных настроек. Для этой цели в папке examples есть примеры программ с параллельными алгоритмами. Для запуска можно использовать компонент wmpiexec.exe, который использует оконный интерфейс, который не нуждается в дополнительных комментариях.
Другой путь для исполнения приложений с использованием MPI – через консоль, например, написав подобную команду [путь_к_библиотеке]/bin/mpiexec -n 2 cpi.exe, где -n 2 указывает количество задействованных процессов (здесь их 2), а cpi.exe – это имя исполняемого приложения. Для простоты работы через консоль советую добавить в переменную окружения PATH путь к mpiexec.exe. Если выполнение приложения производится на однопроцессорной машине, то происходит эмуляция многопроцессорности, т.е. проверять работоспособность своих приложений можно «не отходя от кассы».
В качестве IDE для разработки используется MVS 2005. Напишем программу, которая будет привествовать этот мир от имени разных новорожденных процессов процессов. Для этого используется пустой проект (empty project) с изменением некоторых настроек проекта.
- Выбираем пункт меню Tools => Options.
- В дропдауне “Show directories for:” выбираем пункт “Include files”.
- Добавляем [путь_к_библиотеке]\Include
- В дропдауне “Show directories for:” выбираем пункт “Library files”.
- Добавляем [путь_к_библиотеке]\Lib
- В Solution Explorer кликаем правой кнопкой мыши на проекте и выбираем add => existing item. Выбираем все файлы с расширением .lib в папке [путь_к_библиотеке]\Lib
int ProcNum;
int ProcRank;
int main( int argc, char *argv[]) MPI_Status status;
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &ProcRank);
MPI_Comm_size(MPI_COMM_WORLD, &ProcNum);
printf( "From process %i: Hello, World!\n" , ProcRank);
* This source code was highlighted with Source Code Highlighter .
Компилируем его и запускаем полученный бинарник через wmpiexec на 4 процессах.
Как видим, мир поприветствовал каждый рождённый процесс.
Я умышленно приводил код без каких либо комментариев, а только с целью демонстрации работы библиотеки. В будущем я планирую посвятить статью списку функций MPI. Также интересной является тема избыточной параллельности и, вообще, вопрос когда стоит распарарллеливать приложение, а когда нет. Эти исследования также будут приведены позже. Поэтому у меня возник основной вопрос — сфера применимости в web технологиях? Пока мой интерес к параллельным вычислениям вызван другой проблемой: ускорение моделирования разного рода процессов.
Эта ошибка возникает, когда компоновщику не удается открыть файл для чтения или записи. Ниже перечислены две наиболее распространенные причины этой проблемы.
Программа уже запущена или загружена в отладчике, и
пути к библиотеке неверны или не заключены в двойные кавычки.
Существует множество других возможных причин этой ошибки. Чтобы сократить их, сначала проверьте Тип файла. Затем используйте следующие разделы для выявления и исправления конкретной проблемы.
Не удается открыть файл, созданный проектом
Эта ошибка может возникать, если файл filename еще не существует, когда компоновщик пытается получить к нему доступ. Это может произойти, когда один проект зависит от другого в решении, но проекты создаются в неправильном порядке. Чтобы устранить эту проблему, убедитесь, что ссылки проекта заданы в проекте, который использует этот файл. После этого отсутствующий файл будет создан до того, как он потребуется. дополнительные сведения см. в статьях добавление ссылок в проекты Visual Studio C++ и управление ссылками в проекте.
Слишком длинные пути
Эта ошибка может появиться, когда путь к файлу расширяется до 260 символов. При необходимости измените структуру каталогов или Сократите имена папок и файлов, чтобы сократить пути.
Справка, моей проблемы нет в списке!
согласно Google: «Пожалуйста, измените« подсистему »в настройках компоновщика с« Windows »на« Консоль ». Или наоборот. Вы всегда можете найти файл в Интернете и поместить его в свой путь компоновщика, если вам нужно, чтобы он работал быстро и у вас нет времени на настоящее решение - PeterT 03 июн.
Если файл действительно не существует в \ Program Files \ Microsoft Visual Studio 10.0 \ VC \ lib \ msvcrtd.lib, значит, что-то пошло не так с вашей установкой VC ++. Вы можете найти файл на своем диске с помощью проводника и посмотреть, не был ли он каким-то образом перемещен. Вы можете попробовать восстановить установку с помощью панели управления «Программы и компоненты». - holtavolt 03 июн.
holtavolt, я удалил Visual C ++, а затем установил его, и теперь он работает, спасибо! - kommihe 03 июн.
Для тех бедняков, которые борются с этим, после часа исследования я нашел решение для своего Visual Studio Enterprise 2017:
Во-первых, давайте найдем, где находится ваш файл библиотеки:
С помощью проводника Windows перейдите в каталог, в котором установлена Visual Studio (по умолчанию: C: \ Program Files (x86) \ Microsoft Visual Studio), и выполните поиск msvcrtd.lib.
Я обнаружил, что мой здесь:
Quick Fix (только для одного проекта):
- Щелкните правой кнопкой мыши свой проект, выберите свойства, перейдите к компоновщику, добавьте этот путь в дополнительные каталоги библиотеки.
Постоянное исправление (для всех проектов)
-
Щелкните правой кнопкой мыши и перейдите к свойствам
Перейдите в каталоги VC ++
Добавьте путь к каталогам библиотеки по умолчанию
+1, работает. Но имейте в виду, что путь, который необходимо добавить, отличается для x86 / x64 и для сборок отладки / выпуска. - Claudiu 2 мая '19 в 8:27
Перейдите в свойства вашего проекта, выберите Linker слева. Добавьте это в « Дополнительные каталоги библиотеки »:
Я столкнулся с этой проблемой при компиляции примера приложения с помощью VS2017. Надеюсь, это поможет.
В некоторых диалоговых окнах свойств в «Свойствах проекта» есть флажок «Наследовать от родительских или проектных значений по умолчанию» . Убедитесь, что установлен флажок в окнах свойств каталогов Include и Library и, конечно же, в окне Additional Dependencies .
Если вы используете VS2017, прочтите это. Или просто проигнорируйте этот ответ . Он может быть недействительным для другой версии VS.
Не доверяйте никому, кто сказал вам добавить путь к библиотеке.
- [ЛУЧШЕЕ] Вам просто нужно установить их через VS_installer (большинству из нас нужна x86/x64 версия ниже)
- Версия VC ++ 2017 version_numbers Библиотеки для Spectre [(x86 и x64) | (ARM) | (ARM64)]
- Visual C ++ ATL для [(x86 / x64) | ARM | ARM64] с помощью Spectre Mitigations
- Visual C ++ MFC для [x86 / x64 | ARM | ARM64] с помощью Spectre Mitigations
Это вина VisualStudioTeam, и Microsoft виновата.
Вы не можете сделать глобальную конфигурацию для отключения /QSpectre и IDK, когда и почему VS2017 включает ее за один день. Итак, лучший способ - установить Spectre ? аааа?
@ChrisCatignani Visual Studio должна отключаться /QSpectre по умолчанию, но они этого не делают. И они должны предоставить глобальные настройки для включения или отключения, но они этого не делают. Лучший способ решить эту проблему - установить компонент Spectre, в противном случае вам нужно добавить путь к библиотеке для каждого решения . И вы отрицаете меня, только усугубляете ситуацию. - zxj5470 7 апр '19 в 17:19
Я знаю, что по умолчанию он выключен. Но на самом деле кто-то вроде меня включен и не понимает, почему это так. Я не могу что-то сделать, чтобы отключить его, поэтому просто установите это. - zxj5470 8 апр '19 в 14:51
Для VS 2019 Spectre Mitigation включен по умолчанию. Итак, правильный способ решить эту проблему - установить библиотеки VC ++ для Spectre.
Но, чтобы быстро решить проблему, вы можете отключить Spectre Mitigation.
Project Properties -> C/C++ -> Code Generation -> Spectre Mitigation -> Disabled
Я столкнулся с этой проблемой. Файл существовал на моей машине, он был в пути поиска. Я был озадачен, так как результат ошибки действительно бесполезен. В моем случае я включил защиту от Spectre, но не загрузил библиотеки времени выполнения для Spectre. Как только я скачал, с миром все стало хорошо. Мне также пришлось установить это на моих серверах сборки CI, поскольку эти библиотеки не устанавливаются с VS по умолчанию.
Я решил эту проблему, вам нужно установить все библиотеки Spectre. Установщик Vistual Studio-> Изменить-> Компонент-> Любая библиотека specter. Это решение можно адаптировать к любому проекту.
Это сработало для меня, хотя я никогда не настраивал его для использования каких-либо средств защиты от призраков. - C. Yduqoli 21 марта '19 в 7:51
Удаление устраняет проблему. Просто разместите здесь как связанную проблему для людей, которые ищут решения: после установки WDK VC ++ не работает
Сценарий:
Windows 10 с Visual Studio 2017 (FRESH установка).
Проект «C» (ССЫЛКА: фатальная ошибка LNK1104 : невозможно открыть файл « MSVCRTD.lib »).
Решать:
Запустите установщик Visual Studio .
Выберите « Разработка настольных компьютеров с помощью C ++ ».
В разделе «Сведения об установке» (обычно на правой боковой панели) выберите:
4.1. Набор инструментов VC ++ 2015.3 v14.00 (v140) для настольных ПК .
- Версия набора инструментов в 4.1. это просто для примера.
Щелкните правой кнопкой мыши 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 не смогла найти lib каталог (Library), содержащий файлы msvcrtd.lib .
ВАЖНО: Этот lib каталог также содержит компоновщики, необходимые в процессе компиляции.
Итак, все, что вам нужно сделать, это переопределить расположение каталога библиотеки. Вы можете сделать это с помощью переменных окружения.
Для этого выполните следующие действия:
ШАГ-1: Найдите "msvcrtd.lib" в строке поиска.
ШАГ 2: Нажмите «Открыть расположение файла» (доступно в контекстном меню).
ШАГ-3: Скопируйте адрес каталога из адресной строки.
ШАГ 4: Найдите «Среда» на панели задач и нажмите «Изменить системные переменные среды».
ШАГ 6: В разделе «Системные переменные» нажмите кнопку «Создать . ». Появится диалоговое окно.
ШАГ 7: В диалоговом окне введите следующее:
- Имя переменной: LIB
- Значение переменной: [Каталог, который вы скопировали на «ШАГЕ-3»]
Неправильные разрешения для файла
Эта ошибка может возникать, если у вас недостаточно разрешений для доступа к файлу filename. Это может произойти, если для доступа к файлам библиотеки в защищенных системных каталогах используется обычная учетная запись пользователя. Или, если вы используете файлы, скопированные с других пользователей, у которых все еще есть исходный набор разрешений. Чтобы устранить эту проблему, переместите файл в каталог проекта с возможностью записи. Если перемещенный файл имеет недоступные разрешения, выполните команду takeown.exe в окне командной строки администратора, чтобы стать владельцем файла.
Не удается открыть сторонний файл библиотеки
Существует несколько распространенных причин этой проблемы.
Путь к файлу библиотеки может быть неверным или не заключен в двойные кавычки. Или, возможно, вы не указали его для компоновщика.
Возможно, вы установили 32-разрядную версию библиотеки, но при этом собираетесь на 64 бит или наоборот.
Библиотека может зависеть от других библиотек, которые не установлены.
Может потребоваться предоставить каталог библиотеки, переопределяющий каталог стандартной библиотеки. В командной строке используйте параметр /libpath . В интегрированной среде разработки используйте свойство Дополнительные каталоги библиотек на странице свойств " Общие" компоновщика > свойств > конфигурации для проекта.
Убедитесь, что установлены все версии библиотеки, необходимые для создаваемых конфигураций. воспользуйтесь программой управления пакетами vcpkg , чтобы автоматизировать установку и настройку для многих распространенных библиотек. По возможности лучше создавать собственные копии сторонних библиотек. Затем вы убедитесь, что все локальные зависимости библиотек созданы для тех же конфигураций, что и ваш проект.
Проблемы в переменной среды TMP
Если имя файла LNKnnn, то это имя файла, созданного компоновщиком для временного файла. Каталог, указанный в переменной среды TMP, может не существовать. Кроме того, для переменной среды TMP может быть задано несколько каталогов. Для переменной среды TMP должен быть указан только один путь к каталогу.
Другие распространенные проблемы
Дополнительные зависимости, указанные в интегрированной среде разработки
При указании отдельных библиотек в свойстве Дополнительные зависимости используйте пробелы для разделения имен библиотек. Не используйте запятые или точки с запятой. При использовании пункта меню Правка для открытия диалогового окна Дополнительные зависимости используйте символы новой строки для разделения имен, а не запятых, точек с запятой или пробелов. Также используйте символы новой строки при указании путей к библиотекам в папках библиотек и дополнительных каталогах библиотек .
Не удается открыть файл "К:\програм.ОБЖ"
Чтобы устранить эту проблему для сборок из командной строки, проверьте параметры параметра /libpath . Также проверьте пути, указанные в переменной среды LIB, и пути, указанные в командной строке. Обязательно используйте двойные кавычки для всех путей, содержащих пробелы.
Чтобы устранить эту проблему в интегрированной среде разработки, при необходимости добавьте двойные кавычки для следующих свойств проекта:
свойство каталоги библиотеки на странице свойств конфигурации > VC++ каталоги
Свойство " Дополнительные каталоги библиотек " на странице свойств " Общие" компоновщика > свойств > конфигурации
Свойство Дополнительные зависимости на странице свойств входных данных компоновщика > свойств > конфигурации .
Библиотека vccorlib. lib
Слишком большие файлы
Эта ошибка может возникать из-за слишком большого размера файла. Библиотеки или объектные файлы, размер которых превышает гигабайт, может вызвать проблемы для 32-разрядного компоновщика. Возможным исправлением этой проблемы является использование 64-разрядного набора инструментов. Дополнительные сведения о том, как использовать 64-разрядный набор средств в командной строке, см. в разделе как включить 64-разрядный Visual C++ набор инструментов в командной строке. сведения о том, как использовать 64-разрядный набор инструментов в интегрированной среде разработки, см. в разделе использование MSBuild с 64-разрядным компилятором и инструментами. также см. статью Stack Overflow post: как сделать Visual Studio использовать собственную цепочки инструментов amd64.
обновленные библиотеки Windows SDK
Библиотеки для розничной торговли, отладки или конкретной платформы
Эта ошибка может возникнуть при первой сборке для новой целевой платформы или конфигурации, например в розничной торговле или ARM64. в интегрированной среде разработки проверьте, установлены ли набор инструментов платформы и Windows SDK версии , указанной на странице свойств общие . также убедитесь, что необходимые библиотеки доступны в каталогах библиотек , указанных на странице свойств каталоги VC++. Проверьте свойства каждой конфигурации, например Debug, Retail, x86 или ARM64. Если одна сборка работает, но другая нет, Сравните параметры обоих параметров. Установите все отсутствующие необходимые инструменты и библиотеки.
Проблемы с путями или именами файлов
Приложение выполняется или загружается в отладчике
Если filename — имя исполняемого файла или связанный с ним PDB-файл, см. раздел Если приложение уже запущено. Затем проверьте, загружен ли он в отладчик. Чтобы устранить эту проблему, перед повторным созданием программы закройте программу и выгрузите ее из отладчика. Если приложение открыто в другой программе, например в редакторе ресурсов, закройте его. Если программа не отвечает, может потребоваться завершить процесс с помощью диспетчера задач. Также может потребоваться закрыть и перезапустить Visual Studio.
Параллельная синхронизация сборок
если вы используете параллельный вариант сборки, Visual Studio мог заблокировать файл в другом потоке. Чтобы устранить эту проблему, убедитесь, что один и тот же объект кода или библиотека не встроены в несколько проектов. Используйте зависимости сборки или ссылки проекта, чтобы выбрать в проекте созданные двоичные файлы.
Теперь все готово!
Приведенный выше ответ был для меня не совсем точным. У меня установлен VS2010 Ultimate, и файл, о котором идет речь, отсутствует в моей папке Visual Studio 10.0 \ VC. Скорее я нашел его в папке Visual Studio 9.0 \ VC. Так что, если это так для кого-то, следуйте инструкциям, чтобы изменить компоновщик, но вместо этого используйте папку Visual Studio 9.0 \ VC. У меня это сработало.
Для Visual Studio 2017 Перейдите в свойства проекта и выберите слева компоновщик. Добавьте это в «Дополнительные каталоги библиотеки»:
C: \ Program Files (x86) \ Microsoft Visual Studio \ Shared \ 14.0 \ VC \ lib
У меня немного другая ошибка
LNK1104 cannot open file 'MSVCURTD.lib'
Обратите внимание, что это msvcUrtd (не msvcrtd), но файл не найден в моей системе.
Решил это, установив следующие параметры:
Надеюсь, это поможет.
В VS2017 (Community / Enterprise / Ultimate / Professional):
Добавьте путь (и) к папкам, которые включают желаемый файл (ы) ".lib", по следующему пути в VS:
(Щелкните правой кнопкой мыши) Проект (в обозревателе решений) -> Свойства-> Свойства конфигурации-> Компоновщик-> Общие-> Дополнительные каталоги библиотек
Если существует более одного файла ".lib", используйте ';' чтобы разделить их, в противном случае щелкните поле редактирования, соответствующее «Дополнительные каталоги библиотеки», затем щелкните «» в раскрывающемся меню и добавьте все желаемые файлы «.lib» во вновь открывшееся окно один за другим и простым в использовании способом.
Я столкнулся с этим, используя Visual Studio 2017. Я попробовал предлагаемые здесь решения с явным добавлением путей к тому месту, где находится файл MSVCRT.lib. Но я чувствовал, что это, вероятно, неправильный подход, потому что ранее в течение последних нескольких недель это не было проблемой для моего проекта.
После проб и ошибок я обнаружил, что если я оставлю пустое или пустое значение в разделе Linker -> Input, это приведет к ошибке LNK1104: невозможно открыть файл MSVCRT.lib. В конце концов я решил, что лучше оставить это значение.
В проекте Visual Studio щелкните правой кнопкой мыши элемент проекта на панели обозревателя решений (а не само решение, которое является самым верхним элементом), затем выберите «Свойства». Оттуда сделайте следующее:
Компоновщик -> Ввод : % (AdditionalDependencies)
Эта дополнительная информация может быть полезна, если вы попали в ситуацию так же, как и я. Я обнаружил, что не следует помещать пути к несистемной библиотеке в Linker -> Input. В моем проекте я пытался скомпилировать с внешними файлами .lib. Раньше у меня было значение в этом разделе ввода, например: $ (ProjectDir) lib; % (AdditionalDependencies), но это приводит к другим проблемам. Я обнаружил правильное место (кажется, пока) для размещения путей для ссылки на внешние файлы .lib в проекте C / C ++ в Visual Studio 2017 здесь:
Каталоги VC ++ -> Каталоги библиотек : $ (ProjectDir) lib; $ (Путь к библиотеке)
Обратите внимание, что значение $ (LibraryPath) будет включать дополнительные значения, например, унаследованные от родителей. Мой проект папки содержал папку с именем «lib», поэтому у меня там было первое значение перед точкой с запятой.
В этой заметке показано как установить MPI, подключить его к Visual Studio, а затем использовать с заданными параметрами (числом вычислительных узлов). В статье используется Visual Studio 2015, т.к. именно с ней возникали проблемы у моих студентов (эта заметка написана студентами для студентов), однако вероятно инструкция подойдет и для других версий.
Шаг 1:
Необходимо установить пакет HPC Pack 2008 SDK SP2 (в вашем случае может быть уже другая версия), доступный на официальном сайте Microsoft. Разрядность пакета и системы должны соответствовать.Шаг 2:
Необходимо настроить пути, для этого переходим во вкладку Debug — Properties:Далее во вкладке VC++ Directories необходимо прописать в поле Include Directories:
В поле Library Directories:
В поле с библиотеками, если стоит 32 разрядная версия, вместо amd64 нужно прописать i386.
Далее во вкладке Linker – Input в поле Additional Dependencies необходимо указать библиотеку
:
Шаг 3:
Для настройки запуска необходимо перейти во вкладку Debugging и в поле Command указать:
В поле Command Arguments указать, например,
Число 4 указывает на количество процессов.
Для запуска программы необходимо подключить библиотеку
. Путь к проекту не должен содержать кириллицу. При возникновении ошибок можно воспользоваться Microsoft MPI, доступный по на сайте Microsoft.
Для этого после установки достаточно прописать в поле Command вкладки Debugging путь:
“C:\Program Files\Microsoft MPI\Bin\mpiexec.exe”
Также перед запуском программы не забудьте указать её разрядность:
Пример запуска программы с MPI:
Работа программы на 2 узлах:
В соседней статье вы можете прочитать про установку MPI в Linux и настройку в CLion .
Я столкнулся с этой проблемой при компиляции примера приложения с использованием VS2017 Надеюсь, это поможет
Перейдите к свойствам вашего проекта, выберите Linker слева. Добавьте это в " Дополнительные каталоги библиотек":
Для бедных людей, которые борются с этим, после часа исследований я нашел решение для моей Visual Studio Enterprise 2017:
Сначала давайте найдем, где находится файл вашей библиотеки:
С помощью проводника Windows перейдите в каталог, в котором установлена Visual Studio (по умолчанию: C:\Program Files (x86)\Microsoft Visual Studio), и выполните поиск по msvcrtd.lib.
Я нашел мой, чтобы быть здесь:
Быстрое исправление (только для одного проекта):
Щелкните правой кнопкой мыши по вашему проекту, щелкните по свойствам, перейдите к Linker, добавьте этот путь в Дополнительные каталоги библиотек
Постоянное исправление (для всех проектов)
Открыть проект перейдите к View> Property Manager (это может быть в других окнах) Разверните все папки и выберите несколько " Microsoft.cpp.Win32.user " и " Microsoft.cpp.64.user "
Щелкните правой кнопкой мыши и перейдите к свойствам
Перейдите в каталог VC++ .
Добавьте путь к каталогам библиотеки по умолчанию
В некоторых диалоговых окнах свойств в свойствах проекта есть флажок, указывающий "Наследовать от родительских или проектов по умолчанию" . Убедитесь, что флажок флажка Включить и Библиотека отмечен флажком и, конечно, для окна Дополнительные зависимости.
Я столкнулся с этим вопросом. Файл существовал на моей машине, он был в пути поиска. Я был озадачен, так как результат ошибки действительно бесполезен. В моем случае я включил смягчение Spectre, но не загрузил библиотеки времени выполнения для Spectre. Как только я сделал загрузку, все было в порядке с миром. Я должен был установить это на своих серверах сборки CI, так как эти библиотеки не установлены с VS по умолчанию.
Если вы используете VS2017, пожалуйста, прочитайте его. Или просто проигнорируйте этот ответ. Он может быть недействительным для другой версии VS.
Не доверяйте никому, кто сказал вам, чтобы добавить путь к lib.
-
[ЛУЧШИЙ] Вам просто нужно установить их через VS_installer (большинству из нас просто нужна версия для x86/x64 ниже)
-
VC++ версия 2017 года version_numbers Libs для Spectre [(x86 и x64) | (ARM) | (ARM64)] Визуальный C++ ATL для [(x86/x64) | ARM | ARM64] с призраками Визуальный C++ MFC для [x86/x64 | ARM | ARM64] с призраками
Это ошибка VisualStudioTeam, и Microsoft виновата.
Вы не можете создать глобальную конфигурацию для отключения /QSpectre и IDK, когда и почему VS2017 включит его за один день. Так что лучше всего установить Spectre ? ahhha?
Удаление это решает проблему. Просто публикация здесь как связанная проблема для людей, ищущих решения: После установки WDK VC++ не работает
Я решил эту проблему, вам нужно установить все спектры lib. Vistual Studio Installer-> Изменить → Component-> Любой призрак lib. Это решение может быть адаптировано к любому проекту.
Сценарий:
Windows 10 с Visual Studio 2017 (установка FRESH).
Проект 'C' (ССЫЛКА: фатальная ошибка LNK1104: не удается открыть файл ' MSVCRTD.lib ').
Разрешить:
Запустите " Установщик Visual Studio ".
Выберите " Разработка рабочего стола с помощью C++ ".
В разделе "Сведения об установке" (обычно на правой боковой панели) выберите:
4.1. V C++ 2015.3 v14.00 (v140) набор инструментов для рабочего стола.
-
Версия набора инструментов в 4.1. это только для примера.
Щелкните правой кнопкой мыши "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 может быть неправильно установлен или эти файлы могут быть удалены случайно.
Для VS 2019 функция смягчения последствий включена по умолчанию. Таким образом, правильным способом решения этой проблемы будет установка VC++ Libs для Spectre.
Но, чтобы быстро решить проблему, вы можете отключить Призрачное смягчение
Project Properties → C/C++ → Code Generation → Spectre Mitigation → Disabled
Я включил следующий путь
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проект properties-> linker-> Дополнительные каталоги
Перейдите в Проект → Свойства → C/C++ → Генерация кода → Смягчение последствий → Отключено
Я столкнулся с этим с помощью 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 находится здесь:
V C++ Каталоги → Библиотечные каталоги: $ (ProjectDir) lib; $ (LibraryPath)
Обратите внимание, что значение $ (LibraryPath) будет включать дополнительные значения, такие как унаследованные от родителей. Мой проект папок содержал папку с именем "lib", поэтому у меня было первое значение перед точкой с запятой.
Не удается открыть приложение или его PDB-файл
Windows библиотеки, например kernel32. lib
Если файл, который не удается открыть, является одним из стандартных файлов библиотеки, предоставляемых корпорацией Майкрософт, например kernel32. lib, может возникнуть ошибка конфигурации проекта или ошибка установки. убедитесь, что Windows SDK установлен. если для проекта требуются другие библиотеки майкрософт, такие как MFC, убедитесь, что компоненты MFC также установлены установщиком Visual Studio. Вы можете снова запустить установщик, чтобы добавить дополнительные компоненты в любое время. Дополнительные сведения см. в Изменение Visual Studio. Используйте вкладку отдельные компоненты в установщике, чтобы выбрать конкретные библиотеки и пакеты SDK.
Недостаточно места на диске
Эта ошибка может возникать, если на диске недостаточно места. Компоновщик использует временные файлы в нескольких ситуациях. Даже если на диске достаточно места, большие ссылки могут выпустить или фрагментировать свободное место на диске. Рассмотрите возможность использования параметра /OPT (оптимизация) . выполнение транзитного исключения COMDAT считывает все объектные файлы несколько раз.
Не удается открыть файл библиотеки Майкрософт
Библиотеки в проектах из сетевых или других источников
При построении проекта, скопированного с другого компьютера, расположения установки библиотеки могут отличаться. Для сборок из командной строки убедитесь, что для сборки правильно заданы пути к переменной среды LIB и библиотеке. в Visual Studio можно просмотреть и изменить текущие пути к библиотекам, заданные на страницах свойств проекта. на странице VC++ каталоги выберите элемент управления "раскрывающийся список" для свойства каталоги библиотек , а затем нажмите кнопку изменить. В разделе вычисленное значение диалогового окна каталоги библиотек перечислены текущие пути поиска файлов библиотек. Обновите эти пути, чтобы они указывали на локальные библиотеки.
Приложение заблокировано антивирусным сканированием
Антивирусные программы часто временно блокируют доступ к вновь созданным файлам, особенно .exe и .dll исполняемые файлы. Чтобы устранить эту проблему, попробуйте исключить каталоги сборки проекта из антивирусного сканера.
Библиотеки vcruntime с отслеживанием версий
Читайте также: