Пожалуйста, помогите, я потратил весь день, пытаясь скомпилировать приложение для C++.LINK: фатальная ошибка LNK 1104: невозможно открыть файл 'LIBCMT.lib'
Мой проект содержит один файл: 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: _ \ включает; C: \ Франкенштейн \ включает в себя: C: \ Program Files \ 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 \ включают
LIBPATH: C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ VC \ Lib
Я проверил в каталоге lib, он содержит файл «libcmt.lib». Не знаю, чувствителен ли он к регистру, но я знаю, что ничего не изменил в файлах или каталогах визуальной студии.
Кто-нибудь, пожалуйста, скажите мне, как я могу сделать эту работу?
BTW, этот файл существует на моем диске: C: \ _ \ include \ com_Foo.h, зависимость от libcmt должна поступать косвенно из jni.h include. – msknapp
Я думаю, что это может быть связано с тем, что вы не создаете код в visual studio, но пытаетесь использовать его компилятор в любом случае. Я создал приложение в Code :: Blocks, и когда я не смог заставить компилятор MinGW32 g ++ работать, я попытался использовать компилятор visual studio. Возможно, он предполагает определенную конфигурацию проекта. Возможно ли, что компилятор визуальной студии работает только тогда, когда проект был создан в визуальной студии? – msknapp
Это, пожалуй, довольно старая нить, но поскольку я столкнулся с ней сейчас, я подумал, что это может быть полезно. Ответ @ mrsheen ниже работал для меня, но мне пришлось запускать программу из разработчика cmd, а не из нормального (где ошибка сохранялась). Просто FYI для тех, кто все еще может найти это там. – prateek1592