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'

Josh Sklare
fonte

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.

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

Carol
fonte
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.

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

Assaf Levy
fonte
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.

Harsini
fonte
4

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

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

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

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

Matthias
fonte
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.

Nazarii Plebanskii
fonte
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.

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

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

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

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

Pr0grammer N00b
fonte
0

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

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

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

user3500315
fonte
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.

MikeOnline
fonte
0

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

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

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

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