ATL 문자열 BSTR 변수의 char * 변환 질문입니다.
글쓴이: anaud2 / 작성시간: 화, 2008/09/09 - 9:24오전
안녕하세요
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에서 호출해서 문자열을 받는게 문제가 되는건지 원인을 모르겠습니다.
아시는분 답변을 해주시면 감사하겠습니다.
Forums:
댓글 달기