'마이그레이션'에 해당되는 글 1건
2008. 4. 16. 23:28
이번 프로젝트에 사용할 ActiveX 컨트롤러를 만드는 중에 VC6로 작성된 것을 VS2005로 컴파일 할라고 하는디!
이게 어찌된 일인지 컴파일 하면 이것저것 마춰야 하는게 왜 그리 만은지!!
이왕 정리하기로 맘먹은거 하나하나 해결하면서 정리해 보자.
1. For문의 지역 변수 스코프
for( int i = 0; i < 5; i++ )
{
}
for( i = 0; i < 10; i++ ) {}
VS6에서는 위와같이 작성해두 된다고 한다. 이유는 모르지만( 역시 난 C와 C++은 쥐약이야ㅠㅠ){
}
for( i = 0; i < 10; i++ ) {}
머 일단 문제가 발생하고나서는 당연지사 스코프 문제로 아래쪽 for문에서 i를 int형 혹은 해당하는 형으로 선언해주니 문제 해결
2. warning C4996
이넘의 워닝! 아주 죽을 맞이다.! 어찌하면 안날까? ActiveX자체두 잘 모르는디! ㅡㅡ;
일단 나타나는 워닝을 인터넷을 찾아댕기면서 하나한 해결해 보자! 이럴 시간두 없는디!ㅡㅡ;
warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
VS2005에서 부터는 CRT라이브러리 함수의 문자열을 다루는 함수의 안정성에 많은 신경을 쓰면서 기존의 문자열 함수에 _s를 붙여서 버퍼의 길이를 지정하도록 권장하고 있기 때문에 strcpy같은 문자열 함수에서 위와 같은 warning이 발생한다.위와 같은 warning이 나타날 경우에는 stdafx.h 파일 상단에 아래와 같이 정의해 주면 된단다.
#define _CRT_SECURE_NO_WARNINGS
혹은
#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAES 1
혹은
#define _CRT_SECURE_NO_DEPRECATE
위의 정의가 뜻하는 바는 시간이 없어서 패스.혹은
#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAES 1
혹은
#define _CRT_SECURE_NO_DEPRECATE
다음으로
warning C4996: 'stricmp': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _stricmp. See online help for details.
위와 같은 warning이 날 경우에는 stdafx.h 파일 상단에#define _CRT_NONSTDC_NO_DEPRECATE
위와 같이 정의해 주면 된단다.!!일단 지금까지 나온 warning을 바탕으로 해결된 내용..
난중에 추가적인 내용이 나오면 다시 붙여보장!!
'ººº::Development™:: > ::C/C++™::' 카테고리의 다른 글
[툴] Windows Crash Dump 분석 (0) | 2009.04.10 |
---|---|
[C/C++] 디렉토리 만들기.. (1) | 2008.12.04 |
[C/C++] 오늘 날짜 구하기 (1) | 2008.12.03 |
[C/C++] apache xercex-c 사용하기 (0) | 2008.11.06 |
[C/C++] warning C4278 (0) | 2008.04.16 |