안녕하세요

프로그램 과정에서 막혔던 문제들에 대한 해결책 정리


페이지 목록

2014년 4월 22일 화요일

[VS2010] LINK : fatal error LNK1123: COFF로 변환하는 동안 오류가 발생했습니다. 파일이 잘못되었거나 손상되었습니다.

CVTRES : fatal error CVT1100: 리소스가 중복되었습니다. 형식:MANIFEST, 이름:1, 언어:0x0409 LINK : fatal error LNK1123: COFF로 변환하는 동안 오류가 발생했습니다. 파일이 잘못되었거나 손상되었습니다. 아래 다양한 해법이 있는데 내가 직면한 문제는 VC 6.0 -> VC2010으로 Upgrade 이 후 나타난 문제였다. Manifest 의 ID가 중복으로 지정되게 된다고 하는데 주석처리하라는 답변과 Manifest를 아니오 하라는 답변이 있었다. 이 중 Manifest 를 아니오 선택하는 방법을 선택하였다. 방법 1.프로젝트의 속성 페이지 대화 상자를 엽니다. 자세한 내용은 방법: 프로젝트 속성 페이지 열기를 참조하십시오. 2.구성 속성 노드를 확장합니다. 3.링커 노드를 확장합니다. 4.매니페스트 파일 속성 페이지를 선택합니다. 5.매니페스트 생성 속성을 수정합니다. 출처: http://msdn.microsoft.com/ko-kr/library/f2c0w594.aspx 그 후에도 실행은 되지 않지만, Manifest Error는 사라진다.... 안되네... 아래는 참조 사이트 해당 문제의 해답은 서비스 팩 업데이트 입니다. 링크 : http://www.microsoft.com/ko-kr/download/details.aspx?id=23691 출처: http://6495ed.tistory.com/10 그 외 2가지 경우의 수가 더 있다. VS2010에서 발생한 현상! MSDN에서의 오류 정의! COFF로 변환하는 동안 오류가 발생했습니다. 파일이 잘못되었거나 손상되었습니다. 개체 또는 리소스를 COFF(Common Object File Format)로 변환하지 못했습니다. 이 도구에서는 모든 입력 파일의 형식이 COFF여야 합니다.입력 파일 형식이 COFF가 아닌 경우에는 LINK가 32비트 OMF 개체를 COFF로 자동 변환하거나 이 도구가 CVTRES.EXE를 실행하여 리소스 파일을 변환합니다. 해결방법!! 3가지가 있는데 조건이 조금씩 다르다. 3가지의 조건이 조금씩 다르다. 1. vc++6.0 에서 vs2010으로 변환시 나오는 문제점 1>LINK : fatal error LNK1123: COFF로 변환하는 동안 오류가 발생했습니다. 파일이 잘못되었거나 손상되었습니다. - 무슨 이유인지 모르나 리소스파일 변환시 ID 중복을 시키는 것 같음. - resource.h 에서 해당 ID(MANIFEST 관련 ID) 주석처리 출처 : http://m.blog.daum.net/oranewbie/9069278 2. vs2010자제적인 문제점 - 속성-> 매니페스트 도구 -> 입력 및 출력 -> 매니페스트 포함 (아니오)로 변환시에 오류 해결 출처 : http://blog.naver.com/coman77/50044865923 3. vs2012를 깔고 vs2010일 경우, .NET Framework 4.5가 깔려있는 경우 vs2012님 께서 .Net Framework 를 4.5로 자동 업데이트 시키는데 이때 VS2010과 .NET 4.5의 호환성이 좋지 않다. 사실 VS2012를 사용하면 되지만 부득이하게 VS2010을 사용할 경우 VS2012 SP1을 깔거나 VS2012 제거 후 .NET4.5를 제거하고 .NET4.0을 설치!! 출처 : http://selky.iptime.org/wordpress/?p=13087 그리고 다른 해결책 VS2003 버전으로 작성된 프로젝트를 VS2005로 변환을 하였다. 몇가지 에러가 발생하면서.. 수정을 하고 있느데.. 아래와 같은 신기한 오류가 발생하였다. CVTRES : fatal error CVT1100: 리소스가 중복되었습니다. 형식:MANIFEST, 이름:1, 언어:0x0409 LINK : fatal error LNK1123: COFF로 변환하는 동안 오류가 발생했습니다. 파일이 잘못되었거나 손상되었습니다. 난생 처음 보는 오류~ 오류 내용을 보면 리소스가 중복되었단다.. 그러나 프로젝트에 특별히 추가한 리소스는 없는 상태였고, 혹시나 하는 생각에 resource.h를 열어 보았다. 역시나 중복되는 것은 없네~ 검색을 좀 해보니.. 역시나 비슷한 경우가 있는데, 딱히 해결책은 별로 없다.. 무슨 manifest 파일을 지우라는 소리에 지웠다가.. manifest 파일이 없다는 소리만 나오고.. 그러다 오류 메세지를 잘 보니.. 중복된게 manifest 파일인거 같다.. 음.. rc 파일을 직접 열어서 살펴보니.. 역시나.. 41번째 줄쯤에 한번 정의 되어 있고.. 3 TEXTINCLUDE BEGIN "CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST ""res\\\\MiniCalendar.exe.manifest""\r\n" "\0" END 끝부분에 또 정의가 되어 있다 ㅋㅋ CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "res\\MiniCalendar.exe.manifest" 느낌상 마지막에 정의된 것을 주석처리 했다.. (아마도 2003에서 2005로 변환중에 발생하는 오류가 아닌가 싶다~ ) 그러니 빌드 성공~ ^^ 출처: http://hanburn.tistory.com/63