Programming

Visual Studio 2012 Release Preview를 설치 한 후 오류 'LINK : 치명적인 오류 LNK1123 : COFF로 변환하는 동안 실패 : 파일이 잘못되었거나 손상되었습니다'오류

procodes 2020. 2. 10. 22:30
반응형

Visual Studio 2012 Release Preview를 설치 한 후 오류 'LINK : 치명적인 오류 LNK1123 : COFF로 변환하는 동안 실패 : 파일이 잘못되었거나 손상되었습니다'오류


Visual Studio 2012 Release Preview를 설치했는데 문제가 없지만 Visual Studio 2010을 사용하여 C ++ 프로젝트를 컴파일하려고하면 다음 오류 메시지가 나타납니다.

LINK : 치명적 오류 LNK1123 : COFF로 변환하는 동안 실패 : 파일이 잘못되었거나 손상되었습니다

나는 이것을 100 % 확신하지 못하지만 .rc파일 (자원) 있는 프로젝트와 관련이있는 것 같습니다 .

프로그램 추가 / 제거에서 Visual Studio 2010을 복구하고 다시 부팅하려고했지만 아무런 영향을 미치지 않습니다.

Visual Studio 2010 도구 세트를 사용하도록 설정된 경우 Visual Studio 2012 RC를 사용하여 C ++ 프로젝트를 컴파일하면 동일한 오류가 발생합니다. Visual Studio 2011 툴셋으로 업그레이드하면 문제가 해결됩니다 (물론 프로덕션 코드에서는이 작업을 원하지 않습니다).

업데이트 : Visual Studio 2012를 제거 하고 재부팅 했는데 문제가 계속 발생합니다! 도움!


이 MSDN 스레드 는 수정 방법을 설명합니다.

요약:

  • 로 이동하여 증분 링크를 비활성화하십시오.

    Project Properties 
       -> Configuration Properties 
           -> Linker (General) 
              -> Enable Incremental Linking -> "No (/INCREMENTAL:NO)"
    
  • 또는 VS2010 SP1을 설치하십시오.

편집 (@CraigRinger) : VS 2010 SP1을 설치 하면 64 비트 컴파일러제거됩니다 . 다시 가져 오려면 VS 2010 SP1 컴파일러 팩 을 설치해야합니다 .

이는 Windows 7 및 .NET 4.0 용 Microsoft Windows SDK 7.1Visual Studio 2010에 영향을줍니다 .


증분 연결을 해제해도 작동하지 않고 "내장 매니페스트"를 해제해도 작동하지 않으면 여러 버전의 CVTRES.exe에 대한 경로를 검색하십시오.

/ VERBOSE 링커 옵션으로 디버깅하여 링커가 cvtres를 호출하려고 시도했을 때 링커가 해당 오류 메시지를 쓰고 있음을 발견했습니다.

내 경로 에이 유틸리티의 두 가지 버전이 있음이 밝혀졌습니다. 에 하나에 C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN\cvtres.exe하나 C:\Windows\Microsoft.NET\Framework\v4.0.30319\cvtres.exe. VS2012 설치 후 cvtres.exe의 VS2010 버전이 더 이상 작동하지 않습니다. 이것이 경로의 첫 번째 파일이고 링커가 .res 파일을 COFF 객체 형식으로 변환해야한다고 결정하면 LNK1123과의 연결이 실패합니다.

(오류 메시지가 실제 문제와 관련이 없다는 사실을 정말로 짜증나지만 Microsoft 제품에서는 드문 일이 아닙니다.)

이전 버전의 유틸리티를 삭제 / 이름 바꾸기하거나 PATH 변수를 다시 정렬하면 작동하는 버전이 먼저 나타납니다.

x64 툴링 빌드의 C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64경우 다른 툴이 어디에 있는지 확인해야 할 수도 있습니다 cvtres.exe.


버전을 확인하십시오 cvtrs.exe.

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

잘못된 버전 :
date: 03/18/2010
time: 01:16 PM
size: 31,048 바이트
name: cvtres.exe

올바른 버전 :
date: 02/21/2011
time: 06:03 PM
size: 31,056 바이트
name: cvtres.exe

잘못된 버전이있는 경우 다음에서 올바른 버전을 복사해야합니다.

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

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"

MSDN 포럼 의이 스레드에 따르면 VS2012 RC 설치가 VS2010 C ++ 프로젝트를 중단합니다 . 간단히 VS2010 SP1cvtres.exe 에서 가져 옵니다.

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

또는 VS2012에서

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

과를 통해 복사 cvtres.exe에서 VS2010 RTM의 설치 (한 SP1이없는 )

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

이렇게하면 수정 된 버전 인 cvtres.exe11.0.51106.1을 효과적으로 사용할 수 있습니다 .

에서 도구의 64 비트 버전에 대해 동일한 단계를 반복하십시오 C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64\cvtres.exe.

이 솔루션은 VS2010 용 SP1 설치의 대안입니다. 경우에 따라 SP1을 설치할 수없는 경우도 있습니다 (예 : SP1 이전 빌드를 지원해야하는 경우).


Visual Studio 2012 RC를 설치 한 경우 .NET 4.5 RC를 설치 한 것입니다.

.NET 4.5 RC를 제거하고 필요한 버전을 설치하십시오 (VS 2010의 경우 4.0). 이렇게하면 문제가 해결 될 것입니다.

이것은 같은 문제를 해결했습니다. Visual Studio를 제거 할 필요는 없습니다.


.NET Framework 4.5가 .NET Framework 4.0을 대체 하기 때문입니다 . 운없이 Visual Studio 2010을 여러 번 제거했습니다. .NET Framework 4.5를 제거하고 Visual Studio 2010을 다시 설치하면 정상적으로 작동했습니다.

새로 설치하려면 Visual Studio 11 완전히 제거를 참조하십시오 .


나를 위해 '생성 매니페스트 생성'을 '아니요'로 설정하면 해결되었습니다. (/ INCREMENTAL : NO로 고정됨)


VS2012 RC를 완전히 제거한 다음 VS2010을 완전히 제거한 다음 VS2010을 처음부터 다시 설치 하여이 문제를 해결했습니다.

시간이 오래 걸렸지 만 이제 VS2010에서 C ++ 프로젝트를 다시 컴파일 할 수 있습니다.


x64를 사용하는 경우 다음 리소스가 도움이 될 것입니다 .

이 문제는 Microsoft .NET 4.5가 Visual C ++ 10과 호환되지 않기 때문에 발생합니다. 해결 방법은 Visual C ++ 버전이 아닌 .NET 버전의 cvtres.exe를 실행하는 것입니다. 이러한 파일의 Visual C ++ 버전 이름을 바꾸고 .NET 버전을 대신 복사하여이 작업을 수행했습니다.

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

.NET 4.5 를 제거 하고 .NET 4.0으로 바꾸면 문제가 마술처럼 해결되었습니다 . 그런 다음 Visual Studio 2010을 복구해야했습니다. 어쨌든 손상되었습니다.

이전에 Visual Studio 2012를 설치 한 다음 설치 제거했습니다. 문제와 관련이있을 수 있습니다.


Visual Studio 2012를 설치하지 않았지만 Visual Studio 2010에서이 오류가 계속 발생합니다. Visual Studio 2010 SP1을 설치 한 후에이 문제가 해결되었습니다.


Microsoft Visual Studio 2010 Ultimate동일한 문제가 있었고이 YouTube 비디오에 설명 된 방법으로 해결되었습니다.

비디오 파일의 이름을 변경 제안 cvtres.exe 에서 C를 : \의 Program Files (x86) \ 마이크로 소프트 비주얼 스튜디오 10.0 \ VC \ 빈 (in my Win7X64 matchine)cvtres - old.exe


+1 사용자에게 도움이 되었으면하는 짧은 답변 입니다.

나는이 일부 디버깅을 수행하려고 msbuild /v:diag, 난 것을보고있다 MSBuild를가 로, 실행 파일에 매니페스트 포함하려고하고 <somename> .dll.embed.manifest.res 그 자원은 링커 명령 행에 <somename> .dll.embed.manifest에서 빌드 된 파일입니다. 그러나 매니페스트 파일은 빈 유니 코드 텍스트 파일입니다. (즉, 유니 코드 0xFEFF 접두사가있는 2 바이트 파일)

따라서 루트 문제는 해당 매니페스트 파일이 생성되지 않거나 <somename> .dll.intermediate.manifest를 사용해야 할 때 사용되는 것으로 보입니다.

다른 해결 방법은 속성, 매니페스트 도구, 입력 및 출력에서 ​​"내장 매니페스트"옵션을 끄는 것 같습니다.


Incremental Linking 활성화-> "아니오 (/ INCREMENTAL : NO)"후에는 작동하지 않지만 rc 파일을 삭제 한 후에는 작동합니다.


요약:

Step1

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

1 단계가 작동하지 않으면 2 단계를 수행하십시오.

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

2 단계가 작동하지 않으면 3 단계 파일 복사 중 하나를 수행하십시오.

  1. C : \ Program Files (x86) \ Microsoft Visual Studio 11.0 \ VC \ bin \ cvtres.exe
  2. C : \ Program Files (x86) \ Microsoft Visual Studio 12.0 \ VC \ bin \ cvtres.exe
  3. C : \ Program Files (x86) \ Microsoft Visual Studio 13.0 \ VC \ bin \ cvtres.exe

    그런 다음 C : \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ VC \ bin \ cvtres.exe로 바꾸십시오. 나와 함께 3 단계를 수행하십시오.


2014 년 1 월 현재 .NET Framework 4.5.1을 설치 한 이유 때문에 타사 소프트웨어 설치 또는 자동 업데이트로 인한 것인지 모르겠습니다.

1 월 29 일에 하나의 구성 요소를 설치했으며

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

메시지. 그때 나는 증분 링크를 피함으로써 해결했다.

1 월 31 일에 .NET Framework 4.5.1의 다른 구성 요소를 설치했으며 증분 링크 트릭이 더 이상 작동하지 않았습니다. 그런 다음 Visual Studio 2010 SP1을 설치했지만 나중에 문제가 발생했습니다.

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

SP1이 Visual Studio 2010 설치를 망쳤다 고 생각합니다.

따라서 .NET Framework 4.5.1을 제거하고 .NET Framework 4.0을 설치 한 다음 Visual Studio 2010을 제거했다가 다시 설치했습니다.


서비스 팩을 설치하더라도 오류가 발생하면 C : \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ VC \ bin 폴더에서 cvtres.exe를 제거하거나 이름을 바꾸십시오. 이것은 나를 위해 일했습니다.


내가 설정 증분 링크하기 사용"아니오 (/ INCREMENTAL : NO)"을 그리고 그것은 나를 위해 작동하지 않습니다 .

다음으로 변경했습니다.

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

그리고 그것은 나를 위해 작동합니다 :)


CMake를 다시 설치하면 나에게 도움이되었습니다. CMake의 새로운 사본은 10 대신 Visual Studio 11을 사용해야한다는 것을 알았습니다.


핵심 Win32 프로그래밍에 Windows SDK를 사용하고 있으며 "알 수없는"이유로 .NET 4.5를 설치했습니다. 나는 그것을 제거하고 이전 답변과 같은 4.0을 설치했으며 그래, 나에게도 효과가 있었다.

SDK를 사용하여 Win32 앱을 빌드하기 위해 쓸모없는 .NET 프레임 워크를 사용해야한다는 사실에 놀랐습니다.


나는 다음을 수행하여 이것을 해결했다.

  1. 명령 프롬프트에서 msconfig를 입력하고 Enter를 누르십시오.
  2. 서비스 탭을 클릭하십시오.
  3. "응용 프로그램 경험"을 찾아 확인 표시를합니다 (즉, 활성화하려면 선택).
  4. 확인을 클릭하십시오. 필요한 경우 다시 시작하십시오.

따라서 문제는 영원히 지속될 것입니다. 방해없이 임의로 빌드하고 C ++ 프로젝트를 디버깅하십시오.


OpenGL SuperBible 6th 소스 코드 샘플을 사용하여이 문제에 대한 솔루션을 찾고자하는 사람들을 위해 솔루션은 Debug 대신 Release 에서 빌드됩니다 . 모든 프로젝트는 릴리스 버전 에서 증분 링크 옵션을 비활성화했습니다 .


내 문제는 PC에 동일한 라이브러리가 포함 된 두 개의 경로가 있다는 것입니다. 두 경로 모두 구성 특성-> 링커-> 일반추가 라이브러리 디렉토리추가 되었습니다 . 경로 중 하나를 제거하면 문제가 해결되었습니다.


.NET을 업데이트 한 후에도 같은 문제가 발생했습니다. 먼저 .NET 프레임 워크를 제거한 후 visualstudio.com 에서 Visual Studio를 다운로드 하고 "복구"를 선택했습니다.

NET 프레임 워크는 Visual Studio와 함께 자동으로 설치되었습니다.


몇 번 시도하고 마침내 VS2010을 여러 번 제거하여 문제를 해결했습니다. 모든 파일을 제거하지는 않았으므로 처음으로 작동하지 않는 것 같습니다.

VS2012를 설치할 때 VS2010 SP1을 사용하는 경우 두 프로그램 모두에서 동일한 프로젝트를 수행 할 수 없다고합니다. 하나의 프로그램 만 사용하는 것이 좋습니다.

감사!


이전에 Visual Studio 2010이 설치된 컴퓨터에 Visual Studio 2017 및 .NET Framework 4.6을 설치 한 후이 문제가 발생했습니다.

문제는 이러한 설치 후 C : \ Windows \ System32의 msvcr100_clr0400.dll 파일이 ~ 19Kb 의 매우 작은 크기의 새 파일 로 덮어 쓰기되었지만 이전 파일은 ~ 800Kb라는 것입니다.

다른 빌드 시스템에서 수동으로 파일을 복원 한 후 cvtres.exe가 다시 제대로 작동하기 시작했습니다.

참고 URL : https://stackoverflow.com/questions/10888391/error-link-fatal-error-lnk1123-failure-during-conversion-to-coff-file-inval



반응형