본문 바로가기

3.구현/VC++

[버그,error] UuidToStringW use RPC_WSTR

 

출처 : http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=324664&SiteID=1

 

VS.NET 2003에서는 UuitToStringW사용에는 문제가 없다.

사용법)

WCHAR *str;
UuidToStringW(m_uuid, str);

 

위는 2003에서는 에러가 없지만 2005에서는 에러가 발생한다. 즉 WCHAR이 RPC_WSTR로 변환을 할 수 없다는 것이다.

이 이유는 현재 Platform SDK 에서는

typedef __nullterminated unsigned short __RPC_FAR *RPC_WSTR;

 

로 되어 있다. 이 것이 다음과 같이 읽어야되는데

typedef __nullterminated wchar_t __RPC_FAR *RPC_WSTR;

 

이렇게 안좨기 때문에 에러가 발생한다.

 

이를 해결할 수 있는 방법은 UuidToStringW에서 사용하는 문자열을 RPC_WSTR로 캐스팅하는 것이다. 아니면, #ifdef UNICODE를 추가해서 RPC_CSTR로 캐스팅하는 것도 좀더 포터블하게 만들 수 있다.

 

 

반응형