2012-02-20 26 views
7

Por favor, ayuda, he pasado todo el día tratando de compilar mi aplicación C++.LINK: error fatal LNK 1104: no se puede abrir el archivo 'LIBCMT.lib'

Mi proyecto contiene un archivo fuente: Foo.cpp. Aquí es su código:

#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; 
} 

como se puede ver que estaba tratando de usar JNI, pero yo no creo que tenga nada que ver con el problema. Esto es lo que he intentado en la línea de comandos:

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' 

En mi entorno he puesto:

INCLUYEN: C: _ \ include; C: \ frankenstein \ incluye; C: \ Archivos de programa \ Java \ jdk1.6.0_24 \ include; C: \ Archivos de programa \ Java \ jdk1.6.0_24 \ include \ win32; C: _ \ include \ win32; C: \ Archivos de programa (x86) \ Microsoft Visual Studio 10.0 \ VC \ incluir

LIBPATH: C: \ archivos de programa (x86) \ Microsoft Visual Studio 10.0 \ VC \ lib

Revisé en el directorio lib, contiene un archivo "libcmt.lib". No sé si es sensible a las mayúsculas y minúsculas, pero sé que nunca cambié nada en los archivos o directorios del estudio visual.

¿Alguien podría decirme cómo puedo hacer que esto funcione?

+0

Por cierto, este archivo existe en mi disco: C: \ _ \ include \ com_Foo.h, la dependencia de libcmt debe venir indirectamente del jni.h include. – msknapp

+0

Creo que esto podría deberse a no crear el código en Visual Studio, pero tratando de usar su compilador de todos modos. Creé la aplicación en Code :: Blocks, y cuando no pude hacer funcionar el compilador MinGW32 g ++, intenté usar el compilador de Visual Studio. Tal vez asume una cierta configuración de proyecto. ¿Es posible que el compilador de Visual Studio solo funcione cuando el proyecto se construyó en Visual Studio? – msknapp

+0

Este es quizás un hilo bastante viejo, pero desde que lo encontré ahora, pensé que podría ser útil. La respuesta de @ mrsheen a continuación funcionó para mí, pero tuve que ejecutar el programa desde el cmd del desarrollador en lugar de desde el normal (donde persistía el error). Solo un FYI para alguien que aún podría estar buscando esto por ahí. – prateek1592

Respuesta

11

Sospecho que el símbolo del sistema que está utilizando para ejecutar el compilador no tiene definidas todas las variables de entorno requeridas.

Para asegurarse de que el entorno de línea de comandos está configurado correctamente, asegúrese de haber ejecutado el archivo por lotes vsvars32.bat.

+0

Esto no soluciona el problema. En mi sistema, cl no funciona a menos que ejecute vsvars32.bat primero. Aun así recibo el error. – Pillager225

+1

¡Esto solucionó mi problema! ¡Gracias! – sibley

+1

@sibley puede marcar esto como la respuesta correcta –

2

Esto funcionó para mí cuando llegué ...

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

el nombre del proyecto == “Nombre del proyecto” para este ejemplo.

Vaya a la ventana 'Solution Explorer' para su proyecto.

DERECHA Haz clic en el Proyecto "Nombre del proyecto", no en la Solución "Nombre del proyecto".

Esto abrirá un menú largo.

En la parte inferior es "Propiedades" Haga clic en él.

Esto abrirá la ventana "Project Name" Property Pages.

si el nombre de la ventana (parte superior izquierda) dice ...

“Solución 'Nombre del proyecto' Páginas de propiedades

Cerrar esta ventana, se hace clic derecho en el Solución, no el proyecto , debe hacer clic derecho en el nombre del proyecto.

Por “Nombre del proyecto” Páginas de propiedades

panel de la izquierda expandir Propiedades de configuración

luego haga clic en general

Ahora el panel de la derecha debe mostrar el 'general 'Propiedades de configuración' para su proyecto actual.

Mira hacia abajo la lista de 'plataforma conjunto de herramientas'

Si la versión de VS que está utilizando no es la que aparece que necesitaba para cambiarlo.

Para cambiar la versión de VS, simplemente coloque el puntero del mouse al final del nombre actual de la versión de VS que se muestra y haga clic.

Aparecerá un cuadro con una flecha hacia abajo en el lado derecho de esa fila, haga clic en él.

Esto abrirá una ventana con una lista de versiones de VS.

Elija la versión de VS que está usando AHORA.

Esa ventana debe cerrarse, y su selección debería haber reemplazado a la versión VS del proyecto anterior que se utilizó para construir su proyecto cuando se construyó por primera vez.

A continuación, en la parte inferior de la “Nombre del proyecto” Páginas de propiedades, haga clic en Aplicar , a continuación, OK .

Ahora intenta construir Proyecto.

Espero que esto ayude, me funciona cuando trabajo en proyectos que fueron construidos con versiones anteriores de VS.

Buena suerte Mike.

0

Recibí este mismo error al ejecutar cl.exe desde el Símbolo del sistema del desarrollador para VS2012 ventana de comandos. Resultó que todo lo que tenía que hacer era reiniciar el símbolo del sistema haciendo clic derecho sobre él y eligiendo Ejecutar como administrador.

Cuestiones relacionadas