Hallo,
ich habe eine c# dll mit
[ComVisible(true)]
public struct testStruct
{
public int a;
public string b;
}
public int Test(testStruct[] tests)
{
.....
}
ich möchte aus c diese funktion aufrufen und einen array von strukruren als parameter übergeben
in C
SAFEARRAY \*psa;
SAFEARRAYBOUND sab[1];
sab[0].lLbound = 0;
sab[0].cElements = 2;
testStruct \*pTest;
HRESULT hr2;
IRecordInfo \*pRI;
hr2 = GetRecordInfoFromGuids(\_\_uuid("42b35618-0582-4a95-bf8d-9f961d5b9f7b"), 1, 0, 0x409, \_\_uuidof(testStep), &pRI);
//SafeArrayGetRecordInfo()
psa = SafeArrayCreateEx(VT\_RECORD, 1, sab,pRI);
//if (psa == NULL)
//return E\_OUTOFMEMORY;
hr2 = SafeArrayAccessData(psa, (void\*\*)&pTest);
if (FAILED(hr)) {
SafeArrayDestroy(psa);
return hr;
}
// safearray füllen mit daten
pTest[0].a= 1;
strcpy(pTestStep[0].b, "test1");
pTest[1].a= 2;
strcpy(pTestStep[1].b, "test2");
hr = SafeArrayUnaccessData(psa);
// funktion aufrufen
dllPrt-\>Test(psa);
woher bekomme ich den GUUID von der TypLib( erste parameter)?
oder habt ihr einfachere lösung