¿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'

Josh Sklare
fuente

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.

Josh Sklare
fuente
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'

Villancico
fuente
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.

Daniel Neel
fuente
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 .

Tasa de asalto
fuente
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.

harsini
fuente
4

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

Patrizio Bertoni
fuente
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.

Newtopian
fuente
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.

Lissandro
fuente
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.

Matías
fuente
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ó.

Nazarii Plebanskii
fuente
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í.

MadeOfAir
fuente
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.

Nicko Po
fuente
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.

easuter
fuente
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).

Artorias2718
fuente
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.

Programador N00b
fuente
0

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

Markus Weber
fuente
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

zar
fuente
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.

usuario3500315
fuente
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.

MikeOnline
fuente
0

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

Imad
fuente
-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.

user3860869
fuente
-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

Sunil
fuente
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