ССЫЛКА: фатальная ошибка LNK 1104: не удается открыть файл 'LIBCMT.lib' - PullRequest
12 голосов
/ 20 февраля 2012

Пожалуйста, помогите, я потратил весь день, пытаясь скомпилировать свое приложение на c ++.

Мой проект содержит один исходный файл: Foo.cpp.Вот его код:

#include <jni.h>
#include <com_Foo.h>

JNIEXPORT jint JNICALL Java_com_Foo_add
(JNIEnv * env, jobject obj, jint x, jint y)
{
    return x+y;
}

, как вы можете видеть, я пытался использовать JNI, но я не думаю, что это как-то связано с проблемой.Вот что я попробовал в командной строке:

C:\Users\michael\cworkspace\foo>cl -LD Foo.cpp -FeFoo.dll
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.30319.01 for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.

Foo.cpp
Microsoft (R) Incremental Linker Version 10.00.30319.01
Copyright (C) Microsoft Corporation.  All rights reserved.

/dll
/implib:Foo.lib
/out:Foo.dll
Foo.obj
LINK : fatal error LNK1104: cannot open file 'LIBCMT.lib'

В моем окружении я установил:

ВКЛЮЧИТЬ: C: _ \ include; C: \ frankenstein \ includes; C: \Программные файлы \ Java \ jdk1.6.0_24 \ include; C: \ Program Files \ Java \ jdk1.6.0_24 \ include \ win32; C: _ \ include \ win32; C: \ Program Files (x86) \ Microsoft Visual Studio 10.0\ VC \ include

LIBPATH: C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ VC \ lib

Я проверил в каталоге lib, он содержит "libcmt.lib"файл.Не знаю, чувствительна ли она к регистру, но я знаю, что я никогда ничего не менял в файлах или каталогах visual studio.

Кто-нибудь подскажет, пожалуйста, как мне это сделать?

Ответы [ 6 ]

14 голосов
/ 12 декабря 2018

Воскрешение этой темы в конце 2018 года, поскольку ни одно из других решений не помогло моему делу :)

Для меня эта ошибка начала появляться из ниоткуда после того, как я установил Windows Driver Kit для полностью несвязанного проекта .

Если вам не нужно "Призрачное смягчение" (скорее всего, нет), и, видя эту ошибку, весьма вероятно, что вам просто нужно установить Свойства проекта (страницы свойств) -> Свойства конфигурации -> C / C ++ -> Генерация кода -> Смягчение последствий от до Отключено .

По волшебству он был установлен на Включен установщиком инструментов Visual Studio для WDK во всех проектах, даже если они не имеют никакого отношения к WDK, а набор инструментов Platform не был выбран для каких-либо связанных с драйверами вещей. Microsoft во всей красе.

11 голосов
/ 20 февраля 2012

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

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

5 голосов
/ 08 ноября 2018

Просто чтобы добавить сюда мой опыт, поскольку он может кому-то помочь, и он применим к более новым версиям VS (в моем случае 2017).

Я получал похожую ошибку во время компиляции, когда я переносил свой проект на новую машину. Я наконец-то понял, что в одном из моих проектов в зависимостях было включено смягчение спектра, и библиотеки с этой поддержкой не включены по умолчанию:

enter image description here

2 голосов
/ 30 октября 2016

Это сработало для меня, когда я получил…

fatal error LNK1104: cannot open file 'LIBCMT.lib'

Название вашего проекта == «Название проекта» для этого примера.

Перейдите в ' Обозреватель решений Окно для вашего проекта.

ВПРАВО Нажмите на «Project Name» проекта, а не на «Project Name» решения.

Откроется длинное меню.

Внизу находится « Свойства ». Щелкните по нему.

Откроется окно « Имя проекта » на странице свойств.

ЕСЛИ имя окна (вверху слева) говорит ...

Страницы свойств «Имя проекта решения»

Закройте это окно, щелкнув правой кнопкой мыши на решении , а не Проект, вам нужно щелкнуть правой кнопкой мыши имя проекта.

На страницах свойств « Имя проекта »

развернуть левую панель Свойства конфигурации

Затем нажмите Общие

Теперь на правой панели должны отображаться ' Общие ' Свойства конфигурации 'для вашего текущегоProject.

Просмотрите список до ' Platform Toolset '

Если версия VS, которую вы используете, не та, что вам нужна для ее изменения.

Чтобы изменить версию VS, просто наведите указатель мыши на конец отображаемого имени текущей версии VSи нажмите.

В правой части строки появится поле со стрелкой вниз, щелкните по нему.

Откроется окно со списком версий VS.

Выберите версию VS, которую вы сейчас используете.

Это окно должно закрыться, и ваш выбор должен был заменить старую версию VS проекта, которая использовалась для создания вашего проекта, когда я был впервые собран.

Затем в нижней части « Имя проекта » на страницах свойств нажмите Применить , затем OK .

Теперь попробуйтеbuild Project.

Надеюсь, это поможет, у меня это сработает при работе над проектами, созданными с более ранними версиями VS.

Удачи, Майк.

1 голос
/ 13 мая 2019

Щелкните правой кнопкой мыши ProjectName (в пределах Обозреватель решений ) -> Свойства -> Линкер -> Общие -> Дополнительные каталоги библиотек и установите его так:

$(SolutionDir)$(Platform)\$(Configuration)\;$(VCToolsInstallDir)\lib\$(PlatformShortName);$(VCToolsInstallDir)atlmfc\lib\$(PlatformShortName)
0 голосов
/ 04 января 2018

Я получил эту же ошибку при запуске cl.exe из командной строки Developer для командной строки VS2012 .Оказалось, что все, что мне нужно было сделать, это перезапустить командную строку, щелкнув по ней правой кнопкой мыши и выбрав Запуск от имени администратора .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...