Por que o erro fatal “LNK1104: não é possível abrir o arquivo 'C: \ Program.obj'” ocorre quando eu compilo um projeto C ++ no Visual Studio?


117

Criei um novo projeto C ++ no Visual Studio 2008. Nenhum código foi escrito ainda; Apenas as configurações do projeto foram alteradas.

Ao compilar o projeto, recebo o seguinte erro fatal:

erro fatal LNK1104: não é possível abrir o arquivo 'C: \ Program.obj'

Respostas:


153

Esse problema específico é causado pela especificação de uma dependência de um arquivo lib que tinha espaços em seu caminho. O caminho precisa estar entre aspas para que o projeto seja compilado corretamente.

Em Propriedades de Configuração -> Vinculador -> guia Entrada das propriedades do projeto, há uma propriedade Dependências Adicionais . Este problema foi corrigido alterando esta propriedade de:

C: \ Arquivos de programas \ sofware sdk \ lib \ library.lib

Para:

"C: \ Arquivos de programas \ sofware sdk \ lib \ library.lib"

Onde eu adicionei as aspas.


17
Deus, você acabou de enforcar a perseguição de insetos de dois dias para a de 30 segundos :)
jb.

10
Eu tive o mesmo problema. Se seu Linker estiver correto, mas seu diretório lib estiver configurado incorretamente, o mesmo erro pode ocorrer. Tente olhar em Propriedades de configuração -> diretórios VC ++ -> Diretórios da biblioteca para ver se você configurou a biblioteca corretamente. Às vezes, a pasta lib consiste em uma pasta x86 e uma pasta x64. Você deve configurá-lo para um desses (dependendo do seu compilador) em vez da pasta que contém os dois.
M4st3rM1 de

1
Não se esqueça de colocar um ponto e vírgula depois "C:\Program Files\sofware sdk\lib\library.lib". A ausência de um ;também fará com que o projeto seja compilado incorretamente.
roscioli

1
Tive esse problema ao tentar construir o OpenCV usando o Visual Studio 2005 (no Windows 8.1) ... e resolveu. Ótimo!
AlainD

1
Eu tentei e não funcionou para mim. "Qt5Xmld.lib"; "Qt5XmlPatternsd.lib"; "Qt5Cored.lib";% (Dependências Adicionais) -O que devo alterar?
STF

65

Isso pode acontecer se o arquivo ainda estiver em execução.

: -1: erro: LNK1104: não é possível abrir o arquivo 'debug \ ****. Exe'


4
esse era o meu problema também!
Kamran Bigdely

1
Eu entendi isso porque o MS Security Essentials mantém o arquivo bloqueado.
Synetech

sim, fechei a janela do console anterior e de repente a lib pode ser lida.
Kari

15

O problema foi embora para mim depois de fechar e reabrir o Visual Studio. Não sei por que o problema aconteceu, mas vale a pena tentar.

Isso foi no VS 2013 Ultimate, Windows 8.1.


4
ah, Microsoft ... Nossa primeira tentativa deve ser sempre fechar e reabrir (ou desligar e ligar) - vários bugs misteriosos vão embora quando fazemos isso ...
Leonardo Alves Machado

1
Eu me sinto tão envergonhado que esta solução possa resolver meu problema. Agora, eu não posso mais sair para encontrar meus amigos e familiares.
javaLover

2
Você teve o mesmo problema que Carol.
amod

10

Verifique também se isso não está ativado: Propriedades de configuração -> C / C ++ -> Pré-processador -> Pré-processar para um arquivo .


No meu caso, esse também era o problema, mas o que devo fazer se quiser ativar esse sinalizador (para visualizar o arquivo Prepossessed)?
Guy Avraham

2
Você tem algumas soluções alternativas aqui: Como produzir código pré-processado E compilá-lo (Visual Studio) e aqui: Compilar um projeto (VS 2008) com o argumento / p (pré-processar para um arquivo) não compila . Mas, essencialmente, é uma opção do compilador, portanto, fará qualquer um, mas não ambos.
Assaf Levy

4

Eu tive o mesmo problema.É causado por um "," no nome de uma pasta de caminho de biblioteca adicional. Resolvido alterando o caminho de biblioteca adicional.


4

Meu problema era uma .libextensão faltando , eu estava apenas ligando mylibe o VS decidiu procurar mylib.obj.


3

No meu caso, trata-se de uma referência mal direcionada. O projeto fez referência à saída de outro projeto, mas o último não gerou o arquivo que o primeiro estava procurando.


3

Solução 1 (para o meu caso): reinicie o processo do Windows Explorer (sim, o gerenciador de arquivos do Windows).

Solução 2:

  1. Feche o Visual Studio. Logoff do Windows
  2. Faça logon, reabra o Visual Studio
  3. Construa como de costume. Agora ele cria e pode acessar o arquivo problemático.

Presumo que às vezes o sistema de arquivos ou quem o está controlando se perde com suas permissões. Antes de reiniciar a sessão do windows, tente matar msbuild32.exeprocessos zumbis , reinicie o visual studio, marque nenhum mesmo mostrando o arquivo com problema. Sem problemas de configuração de compilação. Acontece de vez em quando. Alguma coisa interna do Windows não conserta, precisa ser reiniciada.


Eu tive esse problema com o VS2019 ... isso corrigiu ... incrível que os bugs persistem. thx
JHBonarius

2

Eu tive o mesmo erro, apenas com um pacote Nuget que instalei (um que não é apenas cabeçalho) e tentei desinstalar.
O que estava errado para mim era que eu ainda estava incluindo um cabeçalho para o pacote que acabei de desinstalar em um dos meus arquivos .cpp (muito bobo, sim).
Até removi o link de diretórios de biblioteca adicional para ele Project -> Properties -> Linker -> General, mas é claro que não adiantou, pois ainda estava tentando fazer referência ao cabeçalho inexistente.

Definitivamente, uma mensagem de erro confusa neste caso, já que o nome do cabeçalho era, <boost/filesystem.hpp>mas o erro me deu "cannot open file 'llibboost_filesystem-vc140-mt-gd-1_59.lib'"e nenhum número de linha ou nada.


2

Tive o mesmo problema, mas a solução para o meu caso não consta nas respostas. Meu programa antivírus (AVG) determinou o arquivo MyProg.execomo um vírus e o colocou no 'depósito de vírus'. Você precisa verificar este depósito e se o arquivo está lá - então apenas restaure-o. Isso me ajudou.


1

Para um projeto de montagem (ProjectName -> Build Dependencies -> Build Customizations -> masm (selected)), configurar Generate Preprocessed Source Listing como True causou o problema para mim também, limpando a configuração que corrigiu. VS2013 aqui.


1

Tive o mesmo problema com o vinculador reclamando da falta do executável principal. Isso aconteceu durante a conversão da nossa solução para o novo Visual Studio 2013 . A solução é uma mistura variada de projetos / códigos gerenciados e não gerenciados. O problema (e a correção) acabou sendo um arquivo app.config ausente na pasta da solução. Demorou um dia para descobrir isso :(, pois o log de saída não foi muito útil.



0

Estou respondendo porque não vejo essa solução específica listada por mais ninguém.

Aparentemente, meu antivírus (Ad-Aware) estava sinalizando uma DLL da qual depende um dos meus projetos e excluindo-a. Mesmo depois de excluir o diretório onde está a DLL, o mesmo comportamento continuou até que reiniciei meu computador.


0

No meu caso, substituí os arquivos da biblioteca matemática de um curso anterior de gráficos do Game Engine pelo GLM. O problema é que não os adicionei ao projeto dentro do Solution Explorer do Visual Studio (mesmo que estivessem no repositório do projeto).


0

Tive esse problema em conjunto com o erro LNK2038, acompanhei este post para separar as DLLs RELEASE e DEBUG. Neste processo, limpei toda a pasta onde residiam essas dependências.

Felizmente, eu tinha um backup de todos esses arquivos e recuperei o arquivo cujo erro estava sendo gerado na pasta DEBUG para resolver o problema. O código de erro foi enganoso de alguma forma, já que tive que gastar muito tempo para chegar a esta dica de uma das respostas deste post novamente.

Espero que esta resposta, ajude alguém em necessidade.


0

Resolvi isso adicionando um projeto existente à minha solução , que esqueci de adicionar na primeira vez.


0

Eu tive o mesmo erro:

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

Isso foi causado pelo ;no final. Se você tiver várias bibliotecas, elas devem ser separadas por um espaço vazio (barra de espaço), sem vírgula ou ponto-e-vírgula!

Portanto, não use ;ou qualquer outra coisa ao listar bibliotecas emProject properties >> Configuration Properties >> Linker >> Input


0

Eu tentei a solução acima, mas não funcionou para mim. Então, eu renomeio o exe e reconstruo a solução. Funciona para mim.


0

Eu tive este erro exato ao criar uma DLL VC ++ no Visual Studio 2019:

LNK1104: não é possível abrir o arquivo 'C: \ Program.obj'

Descoberto em Propriedades do projeto> Linker> Entrada> Arquivo de definição de módulo, especifiquei um arquivo def que tinha aspas duplas incomparáveis no final do nome do arquivo. Excluir a aspa dupla incomparável resolveu o problema.


0

Morto msbuild32.exee construído novamente. Funcionou para mim


-1

Eu tive o mesmo problema com "Visual Studio 2013".

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

Foi resolvido após fechar e reiniciar o Visual Studio.


-3

Eu estava tendo o mesmo problema, acabei de copiar o código para o novo projeto e iniciar a compilação. Algum outro erro começou a chegar. erro C4996: 'fopen': esta função ou variável pode não ser segura. Considere usar fopen_s ao invés

Para resolver este problema novamente, adicionei minha única propriedade no projeto Project conforme abaixo. Projeto -> Propriedades -> Propriedade de configuração -> c / c ++. Nesta categoria, há o nome do campo Definições de pré-processador. Eu adicionei _CRT_SECURE_NO_WARNINGS para resolver o problema. Espero que ajude ...

Obrigado


Esta resposta não tem relação com o post original.
zar

Sem mencionar que desativar os recursos de segurança não é exatamente uma boa ideia
Matti Virkkunen
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.