천객만래 [千客萬來] (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패밀리

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

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

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

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

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


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

[개발/MFC] error C2665: 'operator new' : 5개의 오버로드 중 ...
쌈꼬쪼려 소백촌닭

Visual Studio VC++ 작업중 (MFC)

 디버깅 모드로 컴파일 중에 아래와 같은 에러 메시지가 나오는 경우가 발생할 수 있다.
그런데 에러의 위치를 찾을 수가 없다. 아래 메시지를 더블 클릭하면 xmemory.h 파일로 이동을 한다.
 

error C2665: 'operator new' : 5개의 오버로드 중 모든 인수 형식을 변환할 수 있는 오버로드가 없습니다.


이 에러에 대해서 대처할 수 있는 방법은 
아래와 같다.

MFC와 STL 사이에 문제로 생각된다.

MFC에서 클래스를 만들면 
파일 위쪽에 아래와 같은 코드가 자동으로 만들어 진다.

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

이 코드에서 발생하는 문제였다.
디버그 모드에서는 new DEBUG_NEW 에서 문제가 되는 것 같다.

해결 방법은 위의 디버그 관련 코드보다 먼저 STL관련 인클루드(#include ...)를 시켜주면 된다.
예를 들자면 

#include <vector>
#include <mysystem.h>
 
#ifdef _DEBUG
#define new DEBUG_NEW
#endif 

 
 

Posted by SB패밀리

컴파일하는데 이런 에러가 발생한다.
fatal error C1189: #error :  WINDOWS.H already included.  MFC apps must not #include <windows.h>

이런에러에 대한 참고 내용이 아래 링크에 있다. 
http://social.msdn.microsoft.com/forums/en-US/vcgeneral/thread/2ab6862f-0d90-467a-b283-f62f6aef96fe/

그리고 헤더 파일에 다음이 포함된다.

#include <afxcoll.h>.

아래에서 stdafx.h 헤더 파일을 살펴보자.

#pragma once

#ifndef STRICT
#define STRICT
#endif

#include <afxcoll.h>
#define _ATL_ALL_WARNINGS
#include "targetver.h"
#include "atlstr.h"

#define _ATL_APARTMENT_THREADED
#define _ATL_NO_AUTOMATIC_NAMESPACE

#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS    // some CString constructors will be explicit



#include "resource.h"
#include <atlbase.h>
#include <atlcom.h>
#include <atlctl.h>


using namespace ATL;


이제 에러가 발생하지 않는다.
Posted by SB패밀리