가끔 컴파일 잘 되던 프로젝트에서
fatal error LNK1123: COFF로 변환하는 동안 오류가 발생했습니다.
이런 요상한 메세지를 띄우며 컴파일이 안 되는 경우가 있다
인터넷에서는 각종 해결방법을 소개 하긴 하지만 그런 방법으로는 해결되지 않는 경우가 더 많다.
매니패스트를 사용안한다거나 서비스팩을 설치하라던가. 이런건 운좋게 해결 될 경우도 있겠지만
해결 되지 않을 가능성이 더 크고 다음번에 또 문제가 발생 할 수 있다.
근본적인 이유는 Visual Studio 2010 과 .Net framework 4.5 버전이 맞지 않기 때문이다.
ExtensionAttribute class 가 4.0까지는 System.Core.dll에 있었는데, 4.5 부터는 mscorlib.dll로 옮겨졌다고 한다.
그래서 C++/cli 코드를 컴파일할 때, 최신버전의 mscorlib.dll을 사용하려고 하는데, 이때 4.0으로 빌드된 다른 .dll들과 충돌이 생긴다고 하네..
해결방법은
1. .Net Framework 의 버전 다운( 4.0 )
2. 컴파일러에서 강제 경로 설정.
중의 한가지를 이용하여 해결 가능하다.
제일 쉬운건 그냥 .Net Framework 4.5버전을 삭제하면 바로 문제없이 컴파일 된다.
경로 설정은 번역 해두신분이 있어 그부분만 담아 둔다.
C++/cli 코드가 포함된 프로젝트 설정에 아래 사항 추가 1. compile의 추가 설정에 아래 라인 추가 /clr:nostdlib 2. 아래의 /AI 설정에 항목 추가 C/C++ ->General->Resolve #using references 에.. "$(FrameworkPathOverride)" 추가 |
참고
'Programming > C, C++, MFC' 카테고리의 다른 글
Dialog에 Drag&Drop 기능을 적용하자. (0) | 2014.12.01 |
---|---|
rand() 는 랜덤이 아니다?? 이제는 랜덤을 바꿔야 할 때! (0) | 2014.11.21 |
변수의 메모리 할당과 #pragma pack() (0) | 2014.07.23 |
함수의 파라미터로 포인터를 사용 (0) | 2014.07.02 |
STL List (0) | 2014.06.09 |