목록C++/LnkError관련 (3)
방프리
오류 C1189 #error: MFC does not support WINVER less than 0x0501. Please change the definition of WINVER in your project properties or precompiled header. 라는 오류를 발견하였다. 윈도우 버전이 너무 낮기 때문에 발생하는 에러로 #define WINVER의 값을 수정하면 된다. * 컴파일러 버전 구분 값 1000 : Visual C++ 4.x (4.0) 1100 : Visual C++ 5 (5.0) 1200 : Visual C++ 6 (6.0) 1300 : Visual C++ .NET (7.0) 1310 : Visual C++ .NET 2003 (8.0) 1400 : Visual C++ ...
* SAFESEH ( Structured Exception Handling) 윈도우 상에서 예외처리를 하는 기법 - 메모리에 대한 손상이 발생하거나 시스템이 예기치 않게 종료되는 이벤트 발생시 프로그램에 대한 예외처리 담당 - 외부 공격자가 프로그램에 대해 예외처리 레코드를 덮어쓰게 되면 이 예외를 탐지하여 프로그램 종료 * 해결방안 (1) 옵션 On/Off 프로젝트 속성 - Linker - 고급 - 이미지에 안전한 예외처리기 포함 (예 /아니오) 혹은 명령줄에서 /SAFESEH:NO 입력 해결법 프로젝트 속성 - 구성 속성 - Linker - 명령줄 /safeseh:no
LNK2005 에러로 몇 시간동안 헤맸었다. 이 에러를 고치면서 발생원인이나 해결 방법 여러 개를 찾아보았는데 한번 정리해볼까 한다. 1. 헤더파일이 중복으로 선언된 경우 보통 이 경우는 그리 많이 발생되지 않을 것이라 생각된다. LNK2005 에러가 발생하는 주 원인이기는 하나 현재 Visual Studio에서 클래스를 생성하면 자동으로 #pragma once를 선언해주기 때문에 헤더 중복 선언이 일어나지 않을 것이기 때문이다. 일어난다면 아주 옛날 버전의 프로젝트에서 발생된 확률이 매우 크다. 해결방법으로는 #ifdef !defined _STDIO_H \n #define _STDIO_H 이렇게 해주면 된다. 2. 문제의 모듈을 찾아 순서대로 적용하는 것이다. - 링커 -> 명령줄에서 /verbose를..