ATL 문자열 BSTR 변수의 char * 변환 질문입니다.

anaud2의 이미지

안녕하세요

ATL을 공부하고 있는 사람입니다.

ATL에서는 메소드 구현시 인자로 문자열을 BSTR로 선언이 되어야 한다고 합니다.
그래서 char *로 변환을 인터넷에서 여러 자료를 찾아보고 구현을 했습니다.

STDMETHODIMP CTestCom::Method(BSTR a, BSTR *b)
{
char *pstr=NULL;

USES_CONVERSION;
pstr = OLE2A(a);
*b = A2OLE(pstr);

return S_OK;
}
위에서 보는 것처럼 USES_CONVERSION; 를 선언하고 OLE2A와 A2OLE를 통해서 문자열을 변환 시키고 있는데요 문제는 ASP에서 ATL DLL을 호출해서 찍어보면 문자의 절반만 나온다는 점입니다.

<%//ASP
dim a
dim b

a = "12345678911234567891"
set obj = Server.CreateObject("BSTRTest2.TestCom")
b = obj.Method(a)

Response.Write(b)
%>

문자열 20개를 찍으면 11개만 나오고 10개를 찍으면 6개만 나오고 있습니다.
이에 대한 문제를 전 모르겠어서 질문을 드립니다.

char *변환이 문제가 되는건지 ASP에서 호출해서 문자열을 받는게 문제가 되는건지 원인을 모르겠습니다.
아시는분 답변을 해주시면 감사하겠습니다.