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?

InformationsquelleAutor Warpin | 2009-11-11
Schreibe einen Kommentar