'VC2005'에 해당되는 글 2건
2008. 4. 16. 23:59
아래 글에 이어서 이 warning은 VS2005를 사용해서 XSI v6.0의 com api dll을 다시 컴파일 할 때 나타나는 warning이란다.!
( Recompiling COM API dll for XSI v.6.0 using Visual Studio .NET 2005 )
영문을 그냥 직역하다 보니 이해가 좀 안되지만???
머 우짜든 나는 에러는 다음과 유사하다
위에서 GetObject는 warning이 나는곳마다 다 틀리다 왜냐 라이브러리마다 모두 다 틀리기 때문에 우짜든 형태는 위와 유사하고 warning이 발생한 곳은
XXXX.tbl를 import한 곳이다.
영문 그래로 rename 한정자를 사용해 다음과 같이 수정해 주면 된다.
GetObject는 warning난 매세지에 나타난 이름을 그대로 사용하면 되고 두번째 파라미터는 아무렇게나 원하는 이름으로 재명명 해주면 된다.
일단 warning은 잡자!!!
( Recompiling COM API dll for XSI v.6.0 using Visual Studio .NET 2005 )
영문을 그냥 직역하다 보니 이해가 좀 안되지만???
머 우짜든 나는 에러는 다음과 유사하다
warning C4278: 'GetObject': identifier of typelibrary 'XXXX.tlb' is already macro. Please use 'rename' modifier.
warning C4278: 'GetObject': 형식 라이브러리 'XXXX.tlb'의 식별자가 이미 매크로입니다. 'rename' 한정자를 사용하십시오
warning C4278: 'GetObject': 형식 라이브러리 'XXXX.tlb'의 식별자가 이미 매크로입니다. 'rename' 한정자를 사용하십시오
위에서 GetObject는 warning이 나는곳마다 다 틀리다 왜냐 라이브러리마다 모두 다 틀리기 때문에 우짜든 형태는 위와 유사하고 warning이 발생한 곳은
XXXX.tbl를 import한 곳이다.
영문 그래로 rename 한정자를 사용해 다음과 같이 수정해 주면 된다.
#import <XXXX.tlb> rename( "GetObject", "GetObjectA" )
GetObject는 warning난 매세지에 나타난 이름을 그대로 사용하면 되고 두번째 파라미터는 아무렇게나 원하는 이름으로 재명명 해주면 된다.
일단 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++] VS6에서 VS2005로 마이그레이션 하기 (0) | 2008.04.16 |
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 |