Upload
others
View
6
Download
0
Embed Size (px)
Citation preview
Visual C++ 2008Visual C++ 2008Visual C++ 2008업그레이드하기Visual C++ 2008업그레이드하기
고재관Microsoft MVPMicrosoft [email protected] www.PDAlab.org myaustin egloos commyaustin.egloos.com
AgendaAgenda
프로젝트 변환
gg
Conversion Wizard코드최적화최적화안전한 문자열처리메시지 핸들러메시지 핸들러프로젝트 프로퍼티데모데모
프로젝트프로젝트프로젝트프로젝트
VC++ 6.0 과 eVC++ 4.0VC++ 6.0 과 eVC++ 4.0과과
VC++ 6.0Visual C++ 6.0 (Visual Studio 6.0)오랜 기간 익숙하여 많이 사용VC++ 새로운 기능이 주춤하여 정체VC++ 새로운 기능이 주춤하여 정체보다 나은 기능의 VC++ .NET 2002, 2002, 2005로 전환 안됨기존 개발 프로그램, 교육기관의 교육등으로 전환 주춤기존 개발 프로그램, 교육기관의 교육등으로 전환 주춤
eVC++ 4.0eMbedded Visual C++ 4.0Windows CE Toolkit for Visual C++ 5.0 부터 출발단독버전으로 eMbedded Visual C++ 3.0 과 4.0 뿐최근 몇 년전 공식 지원 중단.최근 Platform 미지원 상태에서 불안정 하게 사용 중. 문제심각반드시 전환 해야함반드시 전환 해야함
기존 IDE환경기존 IDE환경기존 환경기존 환경
VC++ 6.0 변환VC++ 6.0 변환변환변환
eVC++ 4.0 변환eVC++ 4.0 변환변환변환
eVC++ 4.0 변환완료eVC++ 4.0 변환완료변환완변환완
파일의변화파일의변화파일의변화파일의변화
VC++ 6.0 eVC++ 4.0
변환전 변환후 변환전 변환후
플랫폼확대플랫폼확대플랫폼확대플랫폼확대
Mobile Device의 기회확대eVC++ 4.0 의 제한된 플랫폼지원
VC++ 2008로 변환후 확대된 지원 플랫폼가장 최신 버전까지 모두 지원 하고 향후 버전도 계속 지원됨
기존프로젝트변환VC++ 6 0 eVC++ 4 0
기존프로젝트변환VC++ 6 0 eVC++ 4 0VC++ 6.0 , eVC++ 4.0VC++ 6.0 , eVC++ 4.0
코드최적화코드최적화코드최적화코드최적화
안전한문자열처리안전한문자열처리안전한문자열처리안전한문자열처리
안전한 문자열 처리 기능 추가빌드시 상당한 양의 Warning메시지 발생
안전한 API로 교체 권고함.경고 메시지만 없앨 수 있음.안전문자열 경고 제외
전체 경고메시지 없앰
안전문자열 경고 제외#define _CRT_SECURE_NO_DEPRECATE#define _CRT_SECURE_NO_WARNINGS
#pragma warning ( disable:4996 )
기존size_t mbstowcs(
기존(
wchar_t *wcstr, const char *mbstr, size_t count
)
문자열을 NULL종료Null Trmination
런타임 API의 문제점 내포 ); 런타임 API의 문제점 내포Null없는 등 런타임중 오류 발생 가능성 높음
최근안전한 문자열 처리 위해 API추가
최근errcode mbstowcs_s(
size t *pConvertedMBChars,
안전한 문자열 처리 위해 추가변경 할 것을 권고하고 있음
size_t pConvertedMBChars,wchar_t *wcstr,size_t sizeInWords,const char *mbstr,size t countsize_t count
);
WINVERWINVER
기존WINVER 미정의 또는 다른 값을 가짐winres.h에 포함정상빌드정상빌드
최근최근WINVER 미정의 또는 다른 값을 가질 경우 빌드 에러 발생명시적으로추가선언필요컴파일옵션 /D를통해매크로정의가능#define WINVER 0x0400
혹은혹은
#ifdef #undef WINVER#define WINVER 0x0400##endif
변수선언변수선언변수선언변수선언
VC++ 6.0 / eVC++ 4.0반복문 내 선언은 그 이후에도 유효VC++ 6.0 / eVC++ 4.0for(int i=0; i<10;i++) { … }f ( i 0 i<10 i++) { }
VC++ 2008
for( i=0; i<10;i++) { … }
반복문내 선언은 Local 선언으로 간주VC++ 2008for(int i=0; i<10;i++) { … }
변수를 미리 선언 하여 사용 권장기존 소스코드 수정 불가피
( ; ; ) { }for(int i=0; i<10;i++) { … }
기존 소스코드 수정 불가피추천int i;For( i=0; i<10;i++) { … }For( i=0; i<10;i++) { … }
MFC 와 ATLMFC 와 ATL와와
일부 MFC전용 Class들이 ATL공동 사용사용법이 달라지는 경우도 있으니 확인 필요예) CString Class CStringT Interface로 변경예) g g 변경
VC++ 6.0 / eVC++ 4.0문자의 ASCII/Unicode값을 직접 넣을 수 있음VC++ 6.0 / eVC++ 4.0CString strA = 0x20;
VC++ 2008문자변수 또는 문자열 매크로 처리 해주어야 함문자변수 는 문자열 매 처리 해주어야 함VC++ 2008CString strA = _T(‘\x020’);
혹은CString strA = “ “;CString strA = ;
사용자메시지처리사용자메시지처리사용자메시지처리사용자메시지처리
VC++ 6.0 / eVC++ 4.0사용자메시지 처리 함수 생략 사용가능VC++ 6.0 / eVC++ 4.0ON_MESSAGE(WM_USER+1,OnUser)…void 클래스명::OnUser(WPARAM wParam) { … } 혹은void 클래스명::OnUser() { … } 등…
VC++ 2008사용자메시지 처리함수의 형태는 표준을 따라야 함사용자메시지 처리함수의 형태는 표준을 따라야 함기존 개발 소스코드 수정 불가피VC++ 2008ON_MESSAGE(WM_USER+1,OnUser)…LRESULT 클래스명::OnUser(WPARAM wParam, LPARAM lParam) { … }
메시지핸들러메시지핸들러메시지핸들러메시지핸들러
VC++ 6.0 / eVC++ 4.0Class Wizard 를 통한 통합 관리
VC++ 2008통합 IDE환경구성. Class Wizard 없앰Class의 속성창의 아이콘을 선택속성 추가 삭제의 개념으로 접근Windows Message/ Event Handler 연결Windows Message/ Event Handler 연결UI Control Event Handler 연결
Class ViewClass View
VC++ 6.0 / eVC++ 4.0Class의 헤더 연결Class의 프로그램 파일 연결
VC 2008VC++ 2008동일 기능 수행Message/ Event Handler 연결 추가Message/ Event Handler 연결 추가기반 Class / 파생 Class 연결 추가
변환프로젝트오류수정VC++ 6 0 5 0 프로젝트 변환 및 오류코드 수정
변환프로젝트오류수정VC++ 6 0 5 0 프로젝트 변환 및 오류코드 수정VC++ 6.0 , 5.0 프로젝트 변환 및 오류코드 수정VC++ 6.0 , 5.0 프로젝트 변환 및 오류코드 수정
빌드빌드빌드빌드
프로젝트생성프로젝트생성젝 생성젝 생성
VC++ 6.0 / eVC++ 4.0File New Project탭VC++ 관련 프로젝트 생성
ATL Database MFCATL, Database , MFCDLL, Static-Library, Win32
VC++ 형태의 솔루션 구성만 가능VC 형태의 솔루션 구성만 가능
VC++ 2008File New ProjectVC++ 관련 프로젝트 생성 동일 지원
기능과 과정은 거의 유사함타언어와 통합된 솔루션 구성 추가
VC++ VB NET C# 스마트 장치 등VC++, VB.NET, C#, 스마트 장치 등…
프로젝트기본설정프로젝트기본설정젝 기본설정젝 기본설정
VC++ 6.0 / eVC++ 4.0Project Setting화면 General탭Microsoft Foundation ClassesIntermediate filesIntermediate filesOutput files
VC++ 2008Project Properties화면 Configuration PropertiesProject Properties화면 Configuration Properties General항목동일 기능 제공문자열 형태 설정 추가ATL사용 유무 추가CLR사용 설정 추가 등CLR사용 설정 추가 등…
프로젝트디버그옵션프로젝트디버그옵션젝 디버 옵션젝 디버 옵션
VC++ 6.0 / eVC++ 4.0Debug탭
실행파일 지정 및 작업위치 지정
VC 2008VC++ 2008Debugging항목
동일기능제공동일기능제공디버깅장치 선택 추가디버거 런쳐 및 환경옵션 추가등디버거 런쳐 및 환경옵션 추가등
프로젝트컴파일옵션프로젝트컴파일옵션젝 컴파일옵션젝 컴파일옵션
VC++ 6.0 / eVC++ 4.0C/C++탭
컴파일 옵션 및 선언 수작업 등록 및 수정
VC 2008VC++ 2008C/C++ 항목
Command Line 하부항목 통해 동일기능제공Command Line 하부항목 통해 동일기능제공9개의 하부항목 추가 제공초보자도 쉽게 설정 가능자 쉽게 설정 가능
프로젝트링크옵션프로젝트링크옵션젝 링 옵션젝 링 옵션
VC++ 6.0 / eVC++ 4.0Link탭
링크생성 파일 및 추가라이브러리 지정 가능다양한 링크 옵션을 수작업으로 등록 가능다양한 링크 옵션을 수작업으로 등록 가능
VC 2008VC++ 2008Linker 항목
Command Line 하부항목 통해 동일기능제공Command Line 하부항목 통해 동일기능제공8개의 하부항목 추가 제공초보자도 쉽게 설정 가능자 쉽게 설정 가능
추가코드작업추가코드작업