천객만래 [千客萬來] (It has an interminable succession of visitors)

[개발/VC] xdebug, xlocale 관련 error

컴파일이나 빌드를 하면 xdebug, xlocale 관련 에러가 무지하게 많이 발생하는 경우가 생긴다.


이 에러는 다음과 같이 해결할 수 있다.

단 번에 해결이 안되더라도 꼼꼼하게 소스파일을 찾아서 수정해야한다.


#ifdef _DEBUG

#define new DEBUG_NEW

#endif


항상 .cpp 파일에서 위의 3줄 위에 #include 나 #pragma comment(lib, ...)를 선언해야 한다

Posted by SB패밀리
pragma 란 무엇인가?
 
#pragma는 define 이나 include와 같이 #으로 시작하는 전처리(precompiler) 구문의 하나이다.

1. #pragma once
- 컴파일러에게 한번만 컴파일 하라고 알려준다. 예전에는 #define으로 각헤더에서 최초 
구동시 값을 정의 하게 하는 방법으로 해결했지만 근래에는 한 줄로 해결 합니다.
- #define 으로 같은 효과내기.

#if !defined (_IS_THIS_HEADER_INCLUDED)
#define _IS_THIS_HEADER_INCLUDED
#endif


2. #pragma comment()
- 기본 형식 : #prgma comment( comment-type, comment string? ) [] 안의 구문은
comment-type에 따라 필요할 경우 사용함.
- comment type : compiler, exestr, lib, linker, user 등이 온다.
- 설정방법 :
 
1) subsystem 설정방법.
#pragma comment(linker, "/subsystem:windows")
#pragme comment(linker, "/subsystem:console")

2) section 의 설정(공유메모리사용) 
#pragma comment(linker, "SECTION :.SHAREDATA, RWS") 
#pragma data_seg("SHAREDATA")와 함께 사용하여 공유 메모리를
생성한다. 위의 명령어 대신 def 파일안에 아래와 같이 해 주어도 된다.

SECTIONS
SHAREDATA READ WRITE SHARED

3) 명시적인 라이브러리 링크 (사용자 정의형 링크의 경우 추가적인 라이브러리 링크 경로를 설정해 줍니다)
#pragma comment(lib, "Mylib.lib")

4) 자세한 내용은 MSDN을 참조하세요~~ㅎ


3. #pragma data_seg()
- 기본 형식 : #pragma data_seg( ["section-name"[, "section-class"] ] ), 
[]는 사용하지 않아도 됨.
- 예) DLL에서 Data 공유할 때 사용합니다. 하나의 DLL 파일에서 여러번 메모리에 로딩이 되더라도 하나의 메모리 영역에서 데이터가 공유됩니다.

#pragma data_seg("SHAREDATA")
int x;
char y;
CSharedClass sharedClass = {0};
#pragma data_seg()

- 위와 같이 사용하려면 반드시 섹션을 설정해 주어야한다. 

4. #pragma warning

- 기본 형식

#pragma warning( warning-specifier : warning-number-list [; warning-specifier : 
warning-number-list...] )
#pragma warning( push[,n] )
#pragma warning( pop )

- 보편적인 사용법

#pragma warning(disable:4996)

5. #pragma message()

- 컴파일중에 메시지를 뿌리기 위함.
- 예) #pragma message(" ")
Posted by SB패밀리

[개발/VC] xdebug, xlocale 관련 error

컴파일이나 빌드를 하면 xdebug, xlocale 관련 에러가 무지하게 많이 발생하는 경우가 생긴다.

이 에러는 다음과 같이 해결할 수 있다.
단 번에 해결이 안되더라도 꼼꼼하게 소스파일을 찾아서 수정해야한다.

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

항상 .cpp 파일에서 위의 3줄 위에 #include 나 #pragma comment(lib, ...)를 선언해야 한다.


쌈꼬쪼려 소백촌닭
Posted by SB패밀리