¿Por qué ocurre el error fatal “LNK1104: no se puede abrir el archivo 'C: \ Program.obj'” cuando compilo un proyecto de C ++ en Visual Studio?


117

He creado un nuevo proyecto de C ++ en Visual Studio 2008. Aún no se ha escrito ningún código; Solo se ha cambiado la configuración del proyecto.

Cuando compilo el proyecto, recibo el siguiente error fatal:

error fatal LNK1104: no se puede abrir el archivo 'C: \ Program.obj'

Respuestas:


153

Este problema en particular se debe a la especificación de una dependencia a un archivo lib que tenía espacios en su ruta. La ruta debe estar rodeada de comillas para que el proyecto se compile correctamente.

En las Propiedades de configuración -> Vinculador -> pestaña Entrada de las propiedades del proyecto, hay una propiedad Dependencias adicionales . Este problema se solucionó cambiando esta propiedad de:

C: \ Archivos de programa \ sofware sdk \ lib \ library.lib

A:

"C: \ Archivos de programa \ sofware sdk \ lib \ library.lib"

Donde agregué las citas.


17
Dios, acabas de colgar la persecución de errores de dos días a 30 segundos :)
jb.

10
Yo tuve el mismo problema. Si su Linker es correcto pero su directorio lib está configurado incorrectamente, puede aparecer el mismo error. Intente buscar en Propiedades de configuración -> Directorios de VC ++ -> Directorios de biblioteca para ver si configuró la biblioteca correctamente. A veces, la carpeta lib consta de una carpeta x86 y una x64. Debe configurarlo en uno de esos (dependiendo de su compilador) en lugar de la carpeta que contiene ambos.
M4st3rM1nd

1
No olvide poner un punto y coma después "C:\Program Files\sofware sdk\lib\library.lib". La ausencia de un ;también hará que el proyecto se compile incorrectamente.
Roscioli

1
Tuve este problema al intentar construir OpenCV usando Visual Studio 2005 (en Windows 8.1) ... y lo resolvió. ¡Excelente!
AlainD

1
Lo probé y no me funcionó. "Qt5Xmld.lib"; "Qt5XmlPatternsd.lib"; "Qt5Cored.lib";% (AdditionalDependencies) -¿Qué debo cambiar?
STF

65

Esto puede suceder si el archivo todavía se está ejecutando.

: -1: error: LNK1104: no se puede abrir el archivo 'debug \ ****. Exe'


4
este también era mi problema!
Kamran Bigdely

1
Recibo esto debido a que MS Security Essentials mantiene el archivo bloqueado.
Synetech

sí, cerró la ventana de la consola anterior y de repente se pudo leer la biblioteca.
Kari

15

El problema desapareció después de cerrar y volver a abrir Visual Studio. No estoy seguro de por qué ocurrió el problema, pero valdría la pena intentarlo.

Esto fue en VS 2013 Ultimate, Windows 8.1.


4
ah, Microsoft ... Nuestro primer intento siempre debe estar cerca y volver a abrir (o apagar y encender) - varios errores misteriosos desaparecen cuando hacemos eso ...
Leonardo Alves Machado

1
Me siento tan avergonzado de que esta solución pueda resolver mi problema. Ahora, ya no puedo salir para encontrarme con mis amigos y mi familia.
javaLover

2
Tuviste el mismo problema que Carol.
amod

10

Compruebe también que no tiene esto activado: Propiedades de configuración -> C / C ++ -> Preprocesador -> Preprocesar a un archivo .


En mi caso también fue el problema, sin embargo, ¿qué debo hacer si deseo activar esta bandera (para ver el archivo Prepossessed)?
Guy Avraham

2
Tiene algunas soluciones aquí: Cómo generar código preprocesado Y compilarlo (Visual Studio) y aquí: Compilar un proyecto (VS 2008) con el argumento / p (preproceso en un archivo) no se compila . Pero esencialmente es una opción del compilador, por lo que funcionará con una de las dos, pero no con ambas.
Assaf Levy

4

Tuve el mismo problema. Fue causado por un "," en el nombre de una carpeta de ruta de biblioteca adicional. Se resolvió cambiando la ruta de biblioteca adicional.


4

Mi problema era que faltaba una .libextensión, solo estaba enlazando myliby VS decidió buscar mylib.obj.


3

En mi caso, se trató de una referencia mal dirigida. El proyecto hizo referencia a la salida de otro proyecto, pero este último no dio salida al archivo donde estaba buscando el primero.


3

Solución 1 (para mi caso): reinicie el proceso del Explorador de Windows (sí, el administrador de archivos de Windows).

Solución 2:

  1. Cierre Visual Studio. Cierre de sesión de Windows
  2. Iniciar sesión, volver a abrir Visual Studio
  3. Construye como de costumbre. Ahora compila y puede acceder al archivo problemático.

Supongo que a veces el sistema de archivos o quien lo controla se pierde con sus permisos. Antes de reiniciar la sesión de Windows, trató de matar los msbuild32.exeprocesos zombies , reinicie Visual Studio, no marque ninguno que muestre el archivo problemático. Sin problemas de configuración de compilación. Sucede de vez en cuando. Algo interno de Windows no se soluciona, necesita reiniciarse.


Tuve este problema con VS2019 ... esto lo solucionó ... es increíble que los errores persistan. thx
JHBonarius

2

Tuve el mismo error, solo con un paquete de Nuget que había instalado (uno que no es solo encabezado) y luego intenté desinstalarlo.
Lo que estaba mal para mí fue que todavía estaba incluyendo un encabezado para el paquete que acabo de desinstalar en uno de mis archivos .cpp (bastante tonto, sí).
Incluso eliminé el enlace de los directorios adicionales de la biblioteca Project -> Properties -> Linker -> General, pero, por supuesto, fue en vano ya que todavía estaba tratando de hacer referencia al encabezado inexistente.

Definitivamente un mensaje de error confuso en este caso, ya que el nombre del encabezado era <boost/filesystem.hpp>pero el error me dio "cannot open file 'llibboost_filesystem-vc140-mt-gd-1_59.lib'"y no había números de línea ni nada.


2

Tuve el mismo problema, pero la solución para mi caso no aparece en las respuestas. Mi programa antivirus (AVG) determinó el archivo MyProg.execomo un virus y lo colocó en el "almacén de virus". Debe verificar este almacén y, si el archivo está allí, simplemente restaurelo. Me ayudó.


1

Para un proyecto de ensamblaje (Nombre del proyecto -> Dependencias de compilación -> Personalizaciones de compilación -> masm (seleccionado)), establecer Generar lista de fuentes preprocesadas en Verdadero también me causó el problema, borrar la configuración lo solucionó. VS2013 aquí.


1

Me encuentro con el mismo problema con el vinculador quejándose de que falta el ejecutable principal. Esto sucedió durante el puerto de nuestra solución al nuevo Visual Studio 2013 . La solución es una mezcla variada de proyectos / código administrados y no administrados. El problema (y la solución) terminó siendo un archivo app.config faltante en la carpeta de la solución. Me tomó un día resolver esto :(, ya que el registro de salida no fue muy útil.



0

Respondo porque no veo esta solución en particular en la lista de nadie más.

Aparentemente, mi antivirus (Ad-Aware) estaba marcando una DLL de la que uno de mis proyectos depende y eliminándola. Incluso después de excluir el directorio donde vive la DLL, el mismo comportamiento continuó hasta que reinicié mi computadora.


0

En mi caso, reemplacé los archivos de la biblioteca matemática de un curso anterior de Game Engine Graphics con GLM. El problema fue que no los agregué al proyecto dentro del Explorador de soluciones de Visual Studio (a pesar de que estaban en el repositorio del proyecto).


0

Tuve este problema junto con el error LNK2038, seguí esta publicación para segregar las DLL de RELEASE y DEBUG. En este proceso, había limpiado toda la carpeta donde residían estas dependencias.

Afortunadamente, tenía una copia de seguridad de todos estos archivos y obtuve el archivo para el cual este error estaba devolviendo a la carpeta DEBUG para resolver el problema. El código de error fue engañoso de alguna manera, ya que tuve que dedicar mucho tiempo a llegar a este consejo de una de las respuestas de esta publicación nuevamente.

Espero que esta respuesta ayude a alguien que lo necesite.


0

Lo resolví agregando un proyecto existente a mi solución , que olvidé agregar la primera vez.


0

Yo tenía el mismo error:

fatal error LNK1104: cannot open file 'GTest.lib;'

Esto fue causado por el ;al final. Si tiene varias bibliotecas, deben estar separadas por un espacio vacío (barra espaciadora), ¡sin comas ni punto y coma!

Así que no use ;ni nada más cuando enumere las bibliotecas enProject properties >> Configuration Properties >> Linker >> Input


0

Intenté la solución anterior pero no funcionó para mí. Así que cambio el nombre del exe y reconstruyo la solución. Esto funciona para mi.


0

Tuve este error exacto al construir una DLL de VC ++ en Visual Studio 2019:

LNK1104: no se puede abrir el archivo 'C: \ Program.obj'

Resultó que en Propiedades del proyecto> Vinculador> Entrada> Archivo de definición de módulo, había especificado un archivo def que tenía una comilla doble inigualable al final del nombre del archivo. La eliminación de las comillas dobles no coincidentes resolvió el problema.


0

Asesinado msbuild32.exey construido de nuevo. Funcionó para mí.


-1

Tuve el mismo problema con "Visual Studio 2013".

LNK1104: cannot open file 'debug\****.exe

Se resolvió después de cerrar y reiniciar Visual Studio.


-3

Estaba teniendo el mismo problema, acabo de copiar el código en un nuevo proyecto y comencé la compilación. Comenzó a aparecer algún otro error. error C4996: 'fopen': esta función o variable puede no ser segura. Considere usar fopen_s en su lugar

Para resolver este problema nuevamente, agregué mi única propiedad en el proyecto del Proyecto como se muestra a continuación. Proyecto -> Propiedades -> Propiedad de configuración -> c / c ++. En esta categoría hay un nombre de campo Preprocesador Definiciones He agregado _CRT_SECURE_NO_WARNINGS esto para resolver el problema Espero que ayude ...

Gracias


Esta respuesta no tiene relación con la publicación original.
zar

Sin mencionar que deshabilitar las funciones de seguridad no es exactamente una buena idea
Matti Virkkunen
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.