프로그래밍/정보2010/07/03 08:04

 지난 번에 윈도우즈 7을 설치했다가, 메모리 부족에 허덕이며 포기한 후, 램을 증설하여 다시 한 번 윈도우즈 7에 도전했다. 윈도우즈 업그레이드 기념으로, 비주얼 스튜디오 2010으로 업버전 하면서 예상치 못했던 문제에 당착했으니 누구나 한 번쯤은 당황했을 법한 VC++ 디렉터리 문제이다.
 

왜 바꾼지 알 수 없는 프로젝트별 디렉터리 시스템.

 사실 이 문제는 해결 방법이 바로 나와있기에 그다지 큰 이슈는 아니다. 다만 본인처럼 윈도우즈 7환경(혹은 윈도우즈 7 SDK가 설치되어 있다거나)에 구버전 DirectX SDK를 사용하게 되면 다음과 같은 문제가 발생하게 된다.

1>c:\program files\microsoft sdks\windows\v7.0a\include\objidl.h(11280): error C2061: 구문 오류 : 식별자 '__RPC__out_xcount_part'
1>c:\program files\microsoft sdks\windows\v7.0a\include\objidl.h(11281): error C2059: 구문 오류 : ')'
1>c:\program files\microsoft sdks\windows\v7.0a\include\objidl.h(11281): fatal error C1903: 이전 오류를 복구할 수 없습니다. 컴파일이 중지됩니다.

 대략 이런 오류를 뿜으면서 컴파일이 진행되지 않는데, 이는 DirectX에서 호출된 헤더 파일이 WinSDK보다 구버전이기 때문에 이러한 오류가 발생하는 것 같다.

 해결방법은 매우 간단하다, WinSDK 7.0의 Include 폴더에서 rpcsal.h를 복사하여 DirectX SDK의 Include 폴더에 복사해서 덮어쓰면 된다. 그러면 매우 정상적으로 빌드가 될 것이다.
저작자 표시 비영리 동일 조건 변경 허락
Posted by 크리스_

댓글을 달아 주세요

  1. 비밀댓글입니다

    2010/08/12 18:48 [ ADDR : EDIT/ DEL : REPLY ]
  2. 비밀댓글입니다

    2010/11/16 15:29 [ ADDR : EDIT/ DEL : REPLY ]

프로그래밍/정보2009/08/01 09:59

BOOL과 bool은 자료형이 다르다.

 우리가 참과 거짓을 판별하기 위해 흔히 쓰는 BOOL과 bool에는 차이점이 있다.
bool은 C/C++ 표준 자료형이지만,
BOOL은 windef.h에 typedef int BOOL로 정의 되어있다.
따라서 BOOL을 사용하려면 Windows.h를 포함해주어야한다.

 요점을 말하자면 BOOL은 int형 4byte, bool은 char형 1byte로 자료형이 다르다.
필요한 경우에 맞추어서 사용하도록 하자.

저작자 표시 비영리 동일 조건 변경 허락
Posted by 크리스_

댓글을 달아 주세요

프로그래밍/정보2009/05/17 07:06
 마이크로소프트는 보안을 이유로 Memcpy()함수를 금지.
 마이크로 소프트는 Memcpy(), CopyMemory() 그리고 RtlCopyMemory() 함수들을 공식적으로 금지하기로 했다.

 Memcpy()와 유사한 함수들은 메모리의 많은 양을 차지하고 메모리의 다른 부분에 복사한다. 이것은 올바르게 사용한다면 좋지만, 악의적으로 사용할 때 버퍼 오버플로우 공격의 원인이 되어 당신의 컴퓨터를 망가뜨릴 수 있다.

 새로운 해결책으로 목표 버퍼의 특정 크기를 지정하는 Memcpy_s()가 있다. 이는 여러 방법의 침입을 막아낼 수 있을 것으로 기대한다.

출처: http://gizmodo.com/5256724/microsofts-banning-memcpy-functions-in-the-name-of-security


 아니, 마소양반 이게 무슨 말이오!? 내가… 내가 Memcpy()를 못쓰게 됐다 그말인가!? 으허허허허허!
저작자 표시 비영리
Posted by 크리스_

댓글을 달아 주세요