C#: array übergeben von Zeichenfolgen zu einer C++ - DLL
Ich versuche einige strings in einem array an meine C++ DLL.
Den C++ - DLL-Funktion:
extern "C" _declspec(dllexport) void printnames(char** ppNames, int iNbOfNames)
{
for(int iName=0; iName < iNbOfNames; iName++)
{
OutputDebugStringA(ppNames[iName]);
}
}
Sowie in C#, lade ich die Funktion wie folgt:
[DllImport("MyDLL.dll", CallingConvention = CallingConvention.StdCall)]
static extern void printnames(StringBuilder[] astr, int size);<br>
Dann habe ich setup/Aufruf der Funktion, etwa so:
List<string> names = new List<string>();
names.Add("first");
names.Add("second");
names.Add("third");
StringBuilder[] astr = new StringBuilder[20];
astr[0] = new StringBuilder();
astr[1] = new StringBuilder();
astr[2] = new StringBuilder();
astr[0].Append(names[0]);
astr[1].Append(names[1]);
astr[2].Append(names[2]);
printnames(astr, 3);
Mit DbgView, ich kann sehen, dass einige Daten an die DLL weitergeben, aber es ist Druck aus Müll statt der "ersten", "zweiten" und "Dritten".
Irgendwelche Hinweise?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwendung von String[] anstelle von StringBuilder[]:
MSDN hat mehr info auf Marshalling-arrays.