Development/Etc

본격으로 embedded visual c++을 하기에 앞서

jhbaek 2008. 10. 30. 16:36


이제 본격적으로 eVC++을 공부해야할 때가 왔네요.

우선 eVC++를 하기 위해선 빌드 환경을 제공해야합니다.

시스템 속성에서 boot.ini 의 끝부분을 "Microsoft Windows XP Professional" /execute 로 수정해야해요.
"Microsoft Windows XP Professional" 는 이미 써있으니까 /execute만 추가하면 될겁니다~

그리고!! 컴파일 하기 전에 주의할점!


바로 이부분!!
eVC에서 아무리 컴파일 해도 에뮬레이터 연결이 안되길래 뭐가 문제인가 했더니 빌드 환경을 이상한 걸로 해놓고 있었네요. loop back adapter도 깔아보고 이것 저것 다 해봐도 안됐었는데..ㅎㅎ 바로 전게 문제였다는..
에뮬레이터로 디버그 하기 위해선 에뮬레이터 디버그를 선택해야합니다~

그리고~~ 마지막으로 또 주의할 점은 '유니코드!'
기존에 VC에서 컴파일 할때는 '멀티바이트 코드'로 옵션 변경해 놓으면 됐었는데 eVC서는 그게 안되니까 처음부터 유니코드를 고려하여 프로그래밍 해야합니다~~

다음 소스 코드를 한번 보도록 해요.
wsprintf( str,L"x=%d y=%d" , x, y);
//   TextOut(hdc,10,10,str,strlen(str)); //evc에서 TextOut은 먹히지 않음.
DrawText(hdc,str,_tcslen(str),&rt,DT_SINGLELINE | DT_VCENTER | DT_CENTER);

지금 wsprintf의 두번째 인자에 L을 붙였는데, 이것은 유니코드로 변환해 주기위한 하나의 작업입니다.
wsprintf( str,TEXT("x=%d y=%d") , x, y); 이렇게 TEXT를 써줘도 돼요.

그리고 char를 선언할 때는 TCHAR로 하도록 합시다! 이건 유니코드일땐 유니코드로, 아닐땐 아닌걸로 자동으로 설정되도록 하는 매크로에요.

아래 DrawText를 보면 _tcslen(str)이 보이죠? 멀티바이트 코드에선 사용되지 않는 함수죠.. 멀티바이트 코드에서의 strlen이 유니코드에서는 _tcslen으로 변했답니다~ 이것 외에도 바뀐게 많으니 지금부터 하나하나 찾아봐야겠죠~???

그럼 열심히 공부합시다 ^^