visual-studio-2010 - visual studio 2017 installer setup project




Erro 'LINK: erro fatal LNK1123: falha durante a conversão para COFF: arquivo inválido ou corrompido' após a instalação do Visual Studio 2012 Release Preview (18)

É porque o .NET Framework 4.5 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.

Veja Desinstalar o Visual Studio 11 completamente para fazer uma nova instalação .

Eu instalei o Visual Studio 2012 Release Preview, e parece estar bem, mas agora, quando eu 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

Eu não tenho 100% de certeza disso, mas parece estar relacionado a projetos que possuem arquivos .rc (recursos) neles.

Eu tentei reparar o Visual Studio 2010 de Adicionar / Remover programas e reinicialização, mas isso não tem efeito.

Eu também recebo o mesmo erro se eu 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 para o código de produção).

Atualização: Eu desinstalei o Visual Studio 2012 , reiniciei e o problema ainda persiste! Socorro!


+1 para usuário Curto por uma resposta que funcionou para mim!

Eu tentei fazer alguma depuração disso com 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 isso é um arquivo de recursos construído 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 fato de que o arquivo de manifesto não está sendo gerado, ou está sendo usado quando o <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.


Em janeiro de 2014, por alguns motivos, 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.

No dia 29 de janeiro, instalei um componente e comecei a receber o

LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt 

mensagem. Naquela época, 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 então instalei o Visual Studio 2010 SP1, mas depois o problema se tornou:

Error   6   error LNK1104: cannot open file 'msvcrtd.lib'. 

Eu acho que o SP1 bagunçou minha instalação do Visual Studio 2010.

Então, eu desinstalei o .NET Framework 4.5.1, instalei o .NET Framework 4.0, desinstalei e reinstalei o Visual Studio 2010. Isso funcionou para mim.


Eu configurei Enable Incremental Linking para "No (/ INCREMENTAL: NO)" e não funciona para mim .

Em seguida eu mudei:

Project Properties 
   -> Configuration Properties 
       -> General
          -> Platform Toolset -> "Visual Studio 2012 (v110)"

E funciona para mim :)


Eu não instalei o Visual Studio 2012, mas eu ainda tenho esse erro no Visual Studio 2010. Eu tenho isso resolvido depois de instalar o Visual Studio 2010 SP1.


Eu resolvi esse problema, eventualmente, fazendo uma desinstalação completa do VS2012 RC, seguido por uma desinstalação completa do VS2010, em seguida, uma reinstalação do zero do VS2010.

Demorou para sempre, mas agora sou capaz de compilar projetos C ++ no VS2010 novamente.


Eu 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, diz-se que se você tiver VS2010 SP1 você não pode trabalhar no mesmo projeto em ambos os programas. Recomenda-se ter apenas um programa.

Obrigado!


Eu tive esse problema depois de instalar o Visual Studio 2017 e o .NET Framework 4.6 na máquina que anteriormente tinha o Visual Studio 2010.

O problema foi que depois de tal instalação o arquivo msvcr100_clr0400.dll de C: \ Windows \ System32 foi substituído pelo novo com um tamanho muito pequeno ~ 19 Kb, no entanto, o primeiro era ~ 800 Kb.

Depois que eu restaurei o arquivo manualmente de outra máquina de compilação, cvtres.exe começou a funcionar corretamente novamente.


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.exe


Mesmo apesar de instalar o Service Pack, você está recebendo o erro e, em seguida, 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.


Não funcionou para mim depois de Enable Incremental Linking -> "Não (/ INCREMENTAL: NO)", mas funciona para mim depois que eu deletei o arquivo rc.


O problema foi resolvido magicamente para mim, removendo o .NET 4.5 e substituindo-o pelo .NET 4.0 . Eu então tive que reparar o Visual Studio 2010 - sendo corrompido ao longo do caminho de alguma forma.

Eu tinha instalado anteriormente e, em seguida, não instalado, o Visual Studio 2012 - que pode estar relacionado ao problema.


Para mim, definir 'Gerar manifesto' como 'Não' corrigiu. (Também corrigido com / INCREMENTAL: NÃO)


Para resumir:

Step1

Project Properties 
   -> Configuration Properties 
       -> Linker (General) 
          -> Enable Incremental Linking -> "No (/INCREMENTAL:NO)"

Se step1 não funcionar, faça Step2

Project Properties 
   -> Configuration Properties 
       -> Manifest Tool (Input and Output) 
          -> Enable Incremental Linking -> "No"

se step2 não funcionar, faça Step3 Copie o arquivo um de:

  1. C: \ Arquivos de Programas (x86) \ Microsoft Visual Studio 11.0 \ VC \ bin \ cvtres.exe
  2. C: \ Arquivos de Programas (x86) \ Microsoft Visual Studio 12.0 \ VC \ bin \ cvtres.exe
  3. 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 o passo 3


Se a desativação da vinculação incremental não funcionar para você e a desativação do "Manifesto Incorporado" também não funcionar, pesquise seu caminho em várias versões do CVTRES.exe.

Depurando com a opção de vinculador VERBOSE, descobri que o vinculador estava gravando essa mensagem de erro quando tentou invocar cvtres e falhou.

Descobri que eu tinha duas versões deste utilitário no meu caminho. Um em C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN\cvtres.exe e um em C:\Windows\Microsoft.NET\Framework\v4.0.30319\cvtres.exe . Após a instalação do VS2012, a versão VS2010 do cvtres.exe não funcionará mais. Se esse for o primeiro em 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 tem nada a ver com o problema real, mas isso não é incomum para um produto da Microsoft.)

Basta excluir / renomear a versão mais antiga do utilitário ou reorganizar sua variável PATH, para que a versão que funciona seja a primeira.

Esteja ciente de que, para construções de ferramentas x64, você também pode precisar verificar C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64 onde há outro cvtres.exe .


Se você estiver usando x64, veja um recurso que ajudará :

Isso acontece porque o Microsoft .NET 4.5 é incompatível com o Visual C ++ 10. A solução é 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.

1. C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe
2. C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64\cvtres.exe

1. C:\windows\Microsoft.NET\Framework\v4.0.30319\cvtres.exe
2. C:\windows\Microsoft.NET\Framework64\v4.0.30319\cvtres.exe

Verifique a versão do cvtrs.exe :

dir "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe"

Versão errada:
date : 18/03/2010
time : 01:16 PM
size : 31,048 bytes
name : cvtres.exe

Versão correta:
date : 21/02/2011
time : 18:03
size : 31,056 bytes
name : cvtres.exe

Se você tem uma versão errada, você deve copiar a versão correta de:

C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\cvtres.exe

e substitua o um aqui:

C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe

ou seja

copy "C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\cvtres.exe" "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cvtres.exe"

Este tópico do MSDN explica como corrigi-lo.

Para resumir:

  • Desativar a vinculação incremental, indo para

    Project Properties 
       -> Configuration Properties 
           -> Linker (General) 
              -> Enable Incremental Linking -> "No (/INCREMENTAL:NO)"
    
  • ou instale o VS2010 SP1.

Edições (@CraigRinger): Observe que instalar o 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 .





visual-studio-2012