본문 바로가기

프로그래밍 활용(TIP)

[TIP]VC(MS Visual Studio 2010) __RPC__out_xcount_part

__RPC__out_xcount_part 설명에 앞서 VS2010에서 변경된 디렉터리 적용방식에 대해 먼저 설명 하겠다.

 

[비쥬얼 스튜디오 2010 디렉터리 설정 방법]

비쥬얼 스튜디오 2010 버전은 이전 버전과 다르게 'VC++ 디렉터리' 설정의 방법이 변경되었다.

기존에는 디렉터리 설정을 위해서는 [도구] - [옵션] - [프로젝트 및 솔루션] - [VC++ 디렉터리] 순서로 찾아가서 설정을 하면 비쥬얼 스튜디오를 이용하는 모든 프로젝트에 영향을 주는 방식이었다.

 

때문에 2010 부터는 솔루션별로 설정을 달리 할수 있도록 지원을 하기 시작했으며 설정법 또한 조금 변경되었다.

 

*모든 프로젝트에 동일한 디렉터리 설정을 적용하는 방법

[보기] - [속성관리자] - [Microsoft.Cpp.Win32.user] - [속성] - [vc++ 디렉터리]

 

*단일 프로젝트별로 디렉터리 설정을 적용하는 방법

[솔루션탐색기] - [해당프로젝트의 속성] - [vc++ 디렉터리]

 

[__RPC__out_xcount_part 오류의 발생 원인]

윈도우7 이상의 환경은 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include 경로의 파일들을 기본적으로 읽어들이게 되어있다.

 

DX SDK를 설치하고 DX SDK의 포함파일 폴더와, 라이브러리 폴더를 각각 추가해주면 앞서 설명한 Microsoft SDKs 경로보다 먼저 읽어들이게 된다. 이중 rpcsal.h 파일이 DX SDK 경로에 포함되어 있는것이 더 구형이기 떄문에 해당 오류가 발생되는 것이다.

 

필자의 경우 DX SDK를 종류별로 설치를 했고 설치된 항목은 아래와 같다.

DX SDK Ver.

- 2006 June

- 2007 August

- 2009 August

- 2010 June

 

이중 구형 파일을 포함하고 있는 SDK는 2006 June 버전으로 확인이 되었고, 간단한 해결 방법은 2006 June SDK의 include 경로로 가서 rpcsal.h 파일의 이름을 __rpcsal.h 와 같이 변경만 해주면 해결되는 것이다.

 

필자의 경우 2007, 2009, 2010의 SDK를 모두 바꿔주었음에도 불구하고 동일한 오류가 발생하여 SDK별로 각각 이름을 바꿔서 테스트 해본 결과 2006만 바꿔주면 해결되었다.

 


*2014-03-10 내용 업데이트.

위 방법처럼 헤더파일의 이름을 바꿔서 Microsoft SDKs 에 존재하는 rpcsal.h 를 읽을 수 있도록 하는것 보다 포함파일(Include)로드 순서를 Microsoft SDKs를 먼저 읽게 하고 DirectX SDK를 뒤에 읽게 하는 방법이 더 깔끔하게 해결할 수 있다.

 

[프로젝트] - [속성] - [VC++ 디렉터리] - [포함 디렉터리] 항목의 ▼ 버튼을 눌러서 '편집'을 선택하면 '포함 디렉터리' 다이얼로그가 뜬다. 여기에서 순서를 아래처럼 변경하자.

 

 $(WindowsSdkDir)include

C:\Program Files (x86)\Microsoft DirectX SDK June 2006)\Include

 

(위 순서는 필자의 PC를 바탕으로 지정된 경로이기에 차이가 있을 수 있음.)


*참고 : 포함 디렉터리의 순서를 변경 하였음에도 불구하고 계속 오류가 발생하는 경우에는, 추가 포함 디렉터리의 경로에서도 DXSDK 경로가 포함되어 있는지 확인이 필요하다.