C++ SAFEARRAY* to C# char[]

  • Thread starter Thread starter HiddenHandX
  • Start date Start date
H

HiddenHandX

Guest
C# code:


class Hello{
public void helloWorld(char[] chars){
//do something
}
}





C++ code to call C#:



MyCSDLL::Hello* hello;
//init hello, some calls are ok.

char* myCharPtr;
//init with message

SAFEARRAY* safeArray = NULL;

createSafeArray(safeArray, myCharPtr);

MyCSDLL::_MyRetVal* _retValPtr;
HRESULT result = hello->helloWorld(safeArray, (MyCSDLL::_MyRetVal) _retValPtr);


void createSafeArray(SAFEARRAY** saData, char* charPtr)
{
char* iterator = charPtr;
SAFEARRAYBOUND
Bound;
*saData =
SafeArrayCreate(VT_R8, 1, &Bound);

char HUGEP *pdFreq;
HRESULT hr =
SafeArrayAccessData(*saData, (void HUGEP* FAR*)&pdFreq);
if (SUCCEEDED(hr))
{
do {
*pdFreq++ = *
iterator;
}
while (*iterator++);

}

}





How to call `hello.helloWorld()`? it is expecting `SAFEARRAY*`.


C++ Project is not CLR.

Continue reading...
 
Back
Top