0
설정을 관리 (C 번호) 문자열 [] 배열을 전달 :
난 관리 C# 1 DLL 내부 메소드를 호출하는 COM의 DLL있다. 이 함수는 SAFEARRAY에 마샬링 된 C# 문자열 [] 배열을 반환합니다.는 COM DLL
문제 :
나는 SAFEARRAY 내에서 문자열에 액세스하려고 할 때 난 단지 문자열의 첫 번째 문자를 얻을. 내가 도대체 뭘 잘못하고있는 겁니까?
코드 : 당신의 도움에 대한
// Pointer to the managed interface
DatabasePtr pODB(__uuidof(DBClass));
// Get the string[] array from the managed method
SAFEARRAY* safearray = pODB->GetStringArray();
HRESULT hresult;
long ubound;
long lbound;
hresult = SafeArrayGetUBound(safearray, 1, &ubound);
hresult = SafeArrayGetLBound(safearray, 1, &lbound);
long index;
BSTR fromarray;
for (; lbound <= ubound; lbound++)
{
index = lbound;
hresult = SafeArrayGetElement(safearray, &index, (void*)&fromarray);
char buffer[512];
sprintf_s(buffer,"%s",fromarray);
MessageBox(0, (LPCSTR)buffer, "...", 0);
}
감사합니다,
- 션!
도움을 주셔서 감사합니다. 너는 무엇을 의미하니, 그런 식으로 넘치지 않겠 느냐? – Sean
fromarray가 크면 sprintf가 버퍼 오버플로합니다. 512 –
좋아요. 그것은 512보다 크지 않을 것이다. 그러나 나는 안전한 길을 가고있다. 다시 한번 감사드립니다. – Sean