Instalei o Visual Studio 2012 Release Preview e parece estar correto, mas agora, quando tento usar o Visual Studio 2010 para compilar projetos C ++, recebo a seguinte mensagem de erro:
LINK: erro fatal LNK1123: falha durante a conversão para COFF: arquivo inválido ou corrompido
Não tenho 100% de certeza disso, mas parece estar relacionado a projetos que possuem .rc
arquivos (recursos) neles.
Tentei reparar o Visual Studio 2010 a partir de Adicionar / remover programas e reiniciar, mas isso não tem efeito.
Também recebo o mesmo erro se usar o Visual Studio 2012 RC para compilar os projetos C ++ quando definido para usar o conjunto de ferramentas do Visual Studio 2010. A atualização para o conjunto de ferramentas do Visual Studio 2011 corrige o problema (mas é claro que não quero fazer isso no código de produção).
Atualização: eu desinstalei o Visual Studio 2012 , reiniciei e o problema ainda persiste! Socorro!
fonte
Respostas:
Este thread do MSDN explica como corrigi-lo.
Para resumir:
Desative a vinculação incremental, acessando
ou instale o VS2010 SP1.
Edições (@CraigRinger): observe que a instalação do VS 2010 SP1 removerá os compiladores de 64 bits . Você precisa instalar o pacote do compilador do VS 2010 SP1 para recuperá-los.
Isso afeta o Microsoft Windows SDK 7.1 para Windows 7 e .NET 4.0 , bem como o Visual Studio 2010 .
fonte
Se a desativação da vinculação incremental não funcionar para você e desativar o "Manifesto incorporado" também não, procure no seu caminho várias versões do CVTRES.exe.
Ao depurar com a opção de vinculador / VERBOSE, descobri que o vinculador estava escrevendo essa mensagem de erro quando tentou invocar cvtres e falhou.
Acabou que eu tinha duas versões desse utilitário no meu caminho. Um em
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN\cvtres.exe
e um emC:\Windows\Microsoft.NET\Framework\v4.0.30319\cvtres.exe
. Após a instalação do VS2012, a versão do cvtres.exe do VS2010 não funcionará mais. Se esse for o primeiro no seu caminho, e o vinculador decidir que precisa converter um arquivo .res para o formato de objeto COFF, o link falhará com o LNK1123.(Realmente irritante que a mensagem de erro não tenha nada a ver com o problema real, mas isso não é incomum para um produto da Microsoft.)
Apenas exclua / renomeie a versão mais antiga do utilitário ou reorganize sua variável PATH, para que a versão que funcione chegue primeiro.
Esteja ciente de que, para a criação de ferramentas x64, também é necessário verificar
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64
onde há outracvtres.exe
.fonte
Verifique a versão de
cvtrs.exe
:Versão errada
date
:: 18/03/2010time
: 01:16size
: 31.048 bytesname
: cvtres.exeVersão correta
date
:: 21/02/2011time
: 06:03 PMsize
: 31.056 bytesname
: cvtres.exeSe você tiver uma versão incorreta, copie a versão correta de:
e substitua o aqui:
ie
fonte
De acordo com esta discussão em fóruns do MSDN: projetos VS2012 RC quebras de instalação VS2010 C ++ , simplesmente, tomar
cvtres.exe
a partir VS2010 SP1ou do VS2012
e copie-o
cvtres.exe
na instalação do VS2010 RTM ( sem o SP1 )Dessa forma, você usará efetivamente a versão corrigida
cvtres.exe
11.0.51106.1.Repita as mesmas etapas para a versão de 64 bits da ferramenta em
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64\cvtres.exe
.Essa solução é uma alternativa à instalação do SP1 para VS2010 - em alguns casos, você simplesmente não pode instalar o SP1 (por exemplo, se precisar dar suporte a compilações anteriores ao SP1).
fonte
Se você instalou o Visual Studio 2012 RC, instalou o .NET 4.5 RC.
Desinstale o .NET 4.5 RC e instale a versão necessária (4.0 para VS 2010). Isso deve esclarecer os problemas que você está tendo.
Isso resolveu o mesmo problema. Não há necessidade de desinstalar o Visual Studio.
fonte
É por causa do .NET Framework 4.5 que está substituindo o .NET Framework 4.0. Desinstalei o Visual Studio 2010 várias vezes sem sorte. Quando removi o .NET Framework 4.5 e reinstalei o Visual Studio 2010, tudo correu bem.
Consulte Desinstalar completamente o Visual Studio 11 para fazer uma nova instalação .
fonte
Para mim, definir 'Gerar manifesto' como 'Não' o corrigiu. (Também corrigido com / INCREMENTAL: NO)
fonte
Se você estiver usando x64, aqui está um recurso que ajudará :
Isso acontece porque o Microsoft .NET 4.5 é incompatível com o Visual C ++ 10. A solução alternativa é garantir que você execute a versão .NET do cvtres.exe em vez da versão do Visual C ++. Eu fiz isso renomeando as versões do Visual C ++ desses arquivos e copiando as versões do .NET em seu lugar.
fonte
.NET Framework 4 Multi-targeting pack
e.NET Framework 4.5.2
estão instalados. O arquivoC:\windows\Microsoft.NET\Framework\v4.0.30319\cvtres.exe
pertence a.NET Framework 4 Multi-targeting pack
. Geralmente, esse é o caso se você instalou o Windows SDK 7.1 e depois o .NET atualizado para 4.5.2. Nesse caso, você pode simplesmente mudar o nomeC:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe
paracvtres-old.exe
e o mais novocvtres.exe
(com data 30/8/17) será usado e funcionará bem.Resolvi esse problema, eventualmente, fazendo uma desinstalação completa do VS2012 RC, seguida de uma desinstalação completa do VS2010 e, em seguida, uma reinstalação do zero do VS2010.
Demorou uma eternidade, mas agora sou capaz de compilar projetos C ++ no VS2010 novamente.
fonte
O problema foi resolvido magicamente para mim removendo o .NET 4.5 e substituindo-o pelo .NET 4.0 . Eu tive que reparar o Visual Studio 2010 - que estava sendo corrompido de alguma forma.
Eu havia instalado e desinstalado o Visual Studio 2012 - o que pode estar relacionado ao problema.
fonte
Não instalei o Visual Studio 2012, mas ainda recebi esse erro no Visual Studio 2010. Resolvi isso após a instalação do Visual Studio 2010 SP1.
fonte
Eu tive o mesmo problema com o Microsoft Visual Studio 2010 Ultimate e foi resolvido pelo método descrito neste vídeo do youtube
O vídeo sugere renomear o arquivo cvtres.exe em C: \ Arquivos de Programas (x86) \ Microsoft Visual Studio 10.0 \ VC \ bin
(in my Win7X64 matchine)
para cvtres-old.exefonte
+1 ao usuário Abreviação de uma resposta que funcionou para mim!
Tentei fazer uma depuração disso
msbuild /v:diag
e estou vendo que o MSBuild está tentando incorporar um manifesto no executável, com <somename> .dll.embed.manifest.res na linha de comando do vinculador, onde esse é um recurso arquivo criado a partir de <somename> .dll.embed.manifest. Mas o arquivo de manifesto é um arquivo de texto Unicode vazio. (Ou seja, um arquivo de dois bytes com o prefixo Unicode 0xFEFF)Portanto, o problema raiz parece ter algo a ver com o arquivo de manifesto não ser gerado ou com o uso quando <somename> .dll.intermediate.manifest deveria ter sido usado.
Uma solução alternativa parece ser desativar a opção "Incorporar manifesto" em Propriedades, Ferramenta de manifesto, Entrada e saída.
fonte
Ele não funcionou para mim depois de Ativar link incremental -> "Não (/ INCREMENTAL: NO)", mas funcionou para mim depois que eu excluí o arquivo rc.
fonte
Para resumir:
se o passo 1 não funcionar, execute o passo 2
se a etapa 2 não funcionar, copie a etapa 3 para um dos seguintes arquivos:
C: \ Arquivos de programas (x86) \ Microsoft Visual Studio 13.0 \ VC \ bin \ cvtres.exe
Em seguida, substitua para C: \ Arquivos de programas (x86) \ Microsoft Visual Studio 10.0 \ VC \ bin \ cvtres.exe Comigo, execute 3 etapas
fonte
Desde janeiro de 2014, por alguns motivos que instalei o .NET Framework 4.5.1, não sei se devido a uma instalação de software de terceiros ou a uma atualização automática.
Em 29 de janeiro, instalei um componente e comecei a receber o
mensagem. Naquele momento, resolvi evitando o link incremental.
Em 31 de janeiro, instalei outro componente do .NET Framework 4.5.1 e o truque de link incremental não funcionou mais. Eu instalei o Visual Studio 2010 SP1, mas depois o problema se tornou:
Acho que o SP1 atrapalhou minha instalação do Visual Studio 2010.
Desinstalei o .NET Framework 4.5.1, instalei o .NET Framework 4.0, desinstalei e reinstalei o Visual Studio 2010. Isso funcionou para mim.
fonte
Mesmo com a instalação do Service Pack, você está recebendo o erro e tente remover / renomear o cvtres.exe na pasta C: \ Arquivos de Programas (x86) \ Microsoft Visual Studio 10.0 \ VC \ bin. Isso tem funcionado para mim.
fonte
I definir Ativar Incremental Linking para "Não (/ INCREMENTAL: NO)" e não funciona para mim .
Em seguida, mudei:
E funciona para mim :)
fonte
Reinstalar o CMake funcionou para mim. A nova cópia do CMake descobriu que ele deveria usar o Visual Studio 11 em vez de 10.
fonte
Eu estava usando o Windows SDK para a programação principal do Win32 e tinha o .NET 4.5 instalado por razões "desconhecidas". Eu desinstalei isso e instalei o 4.0 como respostas anteriores e, sim, funcionou para mim também.
Só estou pasmo que eu precisei usar a estrutura .NET inútil para criar aplicativos Win32 usando o SDK.
fonte
Resolvi isso fazendo o seguinte:
Assim, o problema vai durar para sempre. Crie aleatoriamente e depure seus projetos C ++ sem nenhum distúrbio.
fonte
Para aqueles que procuram uma solução para esse problema com os exemplos de código-fonte do OpenGL SuperBible 6th, a solução está sendo criada na versão em vez de na depuração . Todos os projetos desativaram a opção de vinculação incremental na versão Release .
fonte
Meu problema era que eu tinha dois caminhos no meu PC que continham as mesmas bibliotecas. Ambos os caminhos foram adicionados aos diretórios adicionais da biblioteca em Propriedades de configuração -> Vinculador -> Geral . A remoção de um dos caminhos resolveu o problema.
fonte
Tive o mesmo problema após a atualização do .NET: Desinstalei o .NET Framework primeiro, baixei o visual studio do visualstudio.com e selecionei "repair".
O framework NET foi instalado automaticamente com o visual studio -> e agora funciona bem!
fonte
Tentei algumas vezes e finalmente resolvi o problema desinstalando várias vezes o VS2010. Eu acho que não tinha desinstalado todos os arquivos e é por isso que não funcionou pela primeira vez.
Na instalação do VS2012, é dito que, se você tiver o VS2010 SP1, não poderá trabalhar no mesmo projeto nos dois programas. É recomendável ter apenas um programa.
Obrigado!
fonte
Eu tive esse problema depois de instalar o Visual Studio 2017 e o .NET Framework 4.6 na máquina que anteriormente possuía o Visual Studio 2010.
O problema foi que, após essa instalação, o arquivo msvcr100_clr0400.dll de C: \ Windows \ System32 foi substituído pelo novo com um tamanho muito pequeno de ~ 19 Kb, mas o anterior foi de ~ 800 Kb.
Depois que eu restaurei o arquivo manualmente de outra máquina de compilação, o cvtres.exe começou a funcionar corretamente novamente.
fonte