본문 바로가기

Visual Studio6

[기타] Visual C++6.0 마이그레이션 오류 처리 1. 개요 예전에 Visual C++6.0에서 만든 MFC 프로젝트를 Visual Studio 2015로 마이그레이션 작업을 진행한 적이 있습니다. 해당 마이그레이션 과정에서 발생했던 오류와 이를 해결한 내용을 정리합니다. 2. 오류 및 처리 내용 2.1. error LNK2026: 모듈이 SAFESEH 이미지에 대해 안전하지 않습니다. 프로젝트 - 구성 속성 - 링커 - 고급 탭으로 이동한 뒤, '이미지에 안전한 예외 처리기 포함' 항목을 아니요(/SAFESEH:NO}로 변경 2.2. winnt.h(2487,1): error C2118: 첨자가 음수입니다. 프로젝트 - 구성 속성 - C/C++ - 전처리기 탭으로 이동한 뒤, 전처리기 정의에 "WINDOWS_IGNORE_PACKING_MISMATCH" .. 2024. 3. 6.
[DirectX9]SDK 경로설정 및 라이브러리 연결 DiractX9 설치 및 설정 DirectX9 최신버전 (2010-june)을 설치했으면 이제 프로젝트에 추가해서 사용하면 되는데, 이때 SDK 경로설정과 라이브러리 연결을 해주어야 합니다. SDK 경로 설정 먼저 SDK 경로 설정을 하도록 합니다. 그러기 위해서 프로젝트 속성에서 VC++ 디렉터리로 들어갑니다. 프로젝트 속성 -> VC++ 디렉터리에서 포함 디렉터리 에는 아래 보이는 "C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Include" 경로를 추가하고 라이브러리 디렉터리는 아래 보이는 "C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Lib\x86" 경로를 추가한다. 이 2개의 경로를.. 2018. 4. 23.
[visual studio]release 실행파일 만들기 release 실행파일 만들기 일단 제 프로젝트 속성을 보겠습니다. 1. 구성 속성 -> 일반 -> 출력 디렉터리 "$(SolutionDir)bin" 로 변경 2. 구성 속성 -> 디버깅 -> 작업 디렉터리 "$(SolutionDir)bin" 로 변경 위의 두 개 설정은 현재 이 프로젝트에서 bmp 파일을 사용하는데, 이 bmp 파일을 솔루션 디렉터리에 있는 bin 폴더에 저장해서 사용하기 위해 설정한 것입니다. 3. 구성 속성 -> 일반 -> 대상 이름 game_d로 변경 game_d로 뒤에 _d를 붙인 것은 디버깅이라는 것을 명시적으로 알려주기 위함입니다. 4. 구성 속성 -> 링커 -> 입력 ->추가종속성에 winmm.lib 추가 timeGetTime() 함수를 사용하기 위해 추가한 것입니다. 이제.. 2018. 4. 18.
[visual studio]디버깅 디버깅 visual studio의 디버깅을 사용하면 프로그램의 코드를 한 줄 한 줄 실행하여 변수의 값 등을 확인할 수 있습니다. 디버깅의 전제조건으로는 프로그램의 빌드가 성공해야 합니다. 즉, F7 키를 통해 빌드를 실행하여 빌드가 성공하면 디버깅을 할 수 있습니다. 만약 빌드가 실패하며 디버깅을 할 수 없습니다. 단축키 -F9 커서가 있는 위치에 중단점(break point) 설정 / 해제 위에서 빨간색 네모 안에 커서가 위치하고 있습니다. 이렇게 커서가 위치하고 있는 위치에서 F9 키를 누르면 왼쪽에 빨간색 동그라미가 생기면서 중단점이 설정됩니다. 이렇게 중단점이 설정된 상태에서 한 번 더 F9 키를 누르면 중단점이 해제됩니다. 그리고 F9키가 아닌 마우스 좌클릭으로 빨간색 동그라미가 있는 곳에 클.. 2018. 2. 6.
[C++] 메모리 누수 (memory leak)와 CRT 라이브러리 메모리 누수 동적할당을 사용하여 메모리를 사용한 다음 이 메모리를 해제해주지 않으면 계속해서 남아있게 되고 나중에 실제 프로그램이 실행되는 중에 문제가 발생할 수 있습니다. 이렇게 동적할당으로 메모리를 할당하고 메모리를 해제하지 않는 경우는 메모리 누수(memory leak)이라고 합니다. 하지만 컴파일러는 이를 error로 생각하지 않기 때문에 메모리 해제를 하지 않았다고 해서 error를 띄어주지 않습니다. 따라서 메모리 누수로 인해 문제가 발생하면 이를 찾기가 어렵습니다. 따라서 이런 경우에는 CRT 라이브러리를 사용하여 메모리 누수를 찾아야 합니다. CRT 라이브러리 메모리 누수를 탐지하기 위해서는 헤더를 포함해야 합니다. 그리고 코드 실행의 맨 앞에 _CrtSetDbgFlag(_CRTDBG_AL.. 2018. 1. 24.