Visual Studio 2008에서 2015로 마이그레이션 중 발생한 이슈들 정리
비주얼 스튜디오 2008로 된 프로젝트들을 비주얼 스튜디오 2015로 마이그레이션 하면서 나왔던 이슈들을 목록으로 정리해봤습니다.
전체적으로 비주얼 스튜디오 2015가 2008보다 좀더 엄격히? 표준을 지키려고 하고 있기 때문에 발생한 에러가 많았으며, 어떤 에러는 프로젝트에 따라 다를 수 있다는 점 미리 말씀드립니다. 아래 모든 링크는 제 블로그에 각각 정리한 것들입니다.
이외에도 따로 정리는 하지 않았지만 libjpeg 관련 에러도 있었습니다.
jpeg
jpeglib\jmorecfg.h
C2371 'INT32': 재정의. 기본 형식이 다릅니다.
C2227 '->setjmp_buffer' 왼쪽은 클래스/구조체/공용 구조체/제네릭 형식을 가리켜야 합니다.
C2065 'ima_error_ptr': 선언되지 않은 식별자입니다.
C2227 '->pub' 왼쪽은 클래스/구조체/공용 구조체/제네릭 형식을 가리켜야 합니다.
C2228 '.format_message' 왼쪽에는 클래스/구조체/공용 구조체가 있어야 합니다.
C2079 'jerr'은(는) 정의되지 않은 struct 'LoadJPG::ima_error_mgr'을(를) 사용합니다.
C2228 '.pub' 왼쪽에는 클래스/구조체/공용 구조체가 있어야 합니다.
C2228 '.error_exit' 왼쪽에는 클래스/구조체/공용 구조체가 있어야 합니다.
C2228 '.setjmp_buffer' 왼쪽에는 클래스/구조체/공용 구조체가 있어야 합니다.
LNK2019 _sscanf 외부 기호(참조 위치: _jinit_memory_mgr 함수)에서 확인하지 못했습니다.
관련 이슈 발생시 libjpeg 또는 ijg 에서 파일을 받아 적용하시면 됩니다.
기타 비주얼 스튜디오 2015로 빌드시 윈도우 xp에서 실행 관련 게임코디 글 링크로 마무리 해봅니다.
전체적으로 비주얼 스튜디오 2015가 2008보다 좀더 엄격히? 표준을 지키려고 하고 있기 때문에 발생한 에러가 많았으며, 어떤 에러는 프로젝트에 따라 다를 수 있다는 점 미리 말씀드립니다. 아래 모든 링크는 제 블로그에 각각 정리한 것들입니다.
- 컴파일 에러
- C2275 'std::string' 와 C2228 '.npos'
- C2668 'abs': 오버로드된 함수에 대한 호출이 모호합니다.
- C2039 'list': 'std'의 멤버가 아닙니다.
- C2039 'copy_exception': 'std'의 멤버가 아닙니다.
- 비주얼 스튜디오 2015에서 각종(C3861, C2660, C2039, C2065) CRT 컴파일 에러
- C3861 '_Pow_int': 식별자를 찾을 수 없습니다.
- C2694 'Child::~Child(void) throw(Error)': 재정의 가상 함수에 지정된 예외가 기본 클래스 가상 멤버 함수 'Base::~Base(void)'보다 덜 제한적입니다.
- C2338 is deprecated and will be REMOVED. Please use . You can define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS to acknowledge that you have received this warning.
- C2382 'ClassA::~ClassA': 재정의. 예외 사양이 다릅니다.
- C2664 'std::pair<unsigned long,unsigned long> std::make_pair<DWORD,DWORD>(_Ty1 &&,_Ty2 &&)': 인수 1을(를) 'DWORD'에서 'DWORD &&'(으)로 변환할 수 없습니다.
- C2678 이항 '==': 왼쪽 피연산자로 'std::ofstream' 형식을 사용하는 연산자가 없거나 허용되는 변환이 없습니다.
- C2678 이항 '!=': 왼쪽 피연산자로 'std::_Binder<std::_Unforced,SOCKET &,SOCKADDR *,int &>' 형식을 사용하는 연산자가 없거나 허용되는 변환이 없습니다.
- C3688 잘못된 리터럴 접두사 'X'입니다. 리터럴 연산자 또는 리터럴 연산자 템플릿 '연산자 ""X'을(를) 찾을 수 없습니다.
- 링크에러
- LNK2026 모듈이 SAFESEH 이미지에 대해 안전하지 않습니다.
- LNK2005 "public: __thiscall CSize::CSize(void)" 이(가) atltypes.obj에 이미 정의되어 있습니다.
- LNK2005 void * __cdecl operator new(unsigned int) 이(가) LIBCMTD.lib(new_scalar.obj)에 이미 정의되어 있습니다.
- 런타임, 기타에러
이외에도 따로 정리는 하지 않았지만 libjpeg 관련 에러도 있었습니다.
jpeg
jpeglib\jmorecfg.h
C2371 'INT32': 재정의. 기본 형식이 다릅니다.
C2227 '->setjmp_buffer' 왼쪽은 클래스/구조체/공용 구조체/제네릭 형식을 가리켜야 합니다.
C2065 'ima_error_ptr': 선언되지 않은 식별자입니다.
C2227 '->pub' 왼쪽은 클래스/구조체/공용 구조체/제네릭 형식을 가리켜야 합니다.
C2228 '.format_message' 왼쪽에는 클래스/구조체/공용 구조체가 있어야 합니다.
C2079 'jerr'은(는) 정의되지 않은 struct 'LoadJPG::ima_error_mgr'을(를) 사용합니다.
C2228 '.pub' 왼쪽에는 클래스/구조체/공용 구조체가 있어야 합니다.
C2228 '.error_exit' 왼쪽에는 클래스/구조체/공용 구조체가 있어야 합니다.
C2228 '.setjmp_buffer' 왼쪽에는 클래스/구조체/공용 구조체가 있어야 합니다.
LNK2019 _sscanf 외부 기호(참조 위치: _jinit_memory_mgr 함수)에서 확인하지 못했습니다.
기타 비주얼 스튜디오 2015로 빌드시 윈도우 xp에서 실행 관련 게임코디 글 링크로 마무리 해봅니다.
제가 visual studio 2017에서
답글삭제LNK2019 _sscanf 외부 기호(참조 위치: _jinit_memory_mgr 함수)에서 확인하지 못했습니다.
라는 오류가 발생합니다.
그래서 해당 글처럼 해결해보려했으나 파일을 받아 적용하는 방법을 몰라 이렇게 댓글을 답니다...