자체 lib 를 사용하는 플러그인 형태의 코드를 사용하고 있는데 Win32 빌드를 했다. 마른 하늘에 날벼락같은 C1905 오류로 링크가 실패했다.


심각한 오류 C1905


프런트 엔드와 백 엔드가 호환되지 않습니다. 같은 프로세서를 대상으로 해야 합니다.


출처 : https://msdn.microsoft.com/ko-kr/library/414e6214.aspx


컴파일러에 의해 생성된 obj 파일의 x86, ARM, x64 와 같은 타겟 머신이 다를 경우에 발생하는 오류다. dumpbin 으로 확인해봤으나 사용하는 lib 파일들은 다 x86 이었다.


한동안 해결을 못하고 막혀 있다가 혹시나 싶어 옵션들을 확인해봤다. lib 파일의 전체 프로그램 최적화 옵션을 '링크 타임 코드 생성 사용'에서 '전체 프로그램 최적화 안 함'으로 바꿨더니 문제가 사라졌다.


x64 버전은 '링크 타임 코드 생성 사용' 옵션으로 해도 문제가 발생하지 않았다.


lib 파일을 '링크 타임 코드 생성 사용'으로 하고 자체 제작한 테스트용 exe 파일을 '전체 프로그램 최적화 안 함'이나 다른 옵션으로 바꿔도 문제가 발생하지 않았다.


UE4 빌드시에 어떤 옵션이 충돌하지는 모르겠으나 링크 시 C1905 오류가 발생한다면 자체 제작한 lib 의 전체 프로그램 최적화 옵션을 '전체 프로그램 최적화 안 함'으로 바꾸고 시도해 보길 바란다.


728x90

+ Recent posts