PInvoke für C-Funktion, die char * zurückgibt

Ich bin versucht, zu schreiben, etwas C# - code, der eine Methode aufruft, die aus einer nicht verwalteten DLL. Der Prototyp für die Funktion in der dll ist:

extern "C" __declspec(dllexport) char *foo(void);

In C#, habe ich zuerst verwendet:

[DllImport(_dllLocation)]
public static extern string foo();

Es scheint zu funktionieren auf der Oberfläche, aber ich bin immer Speicher Korruption Fehler während der Laufzeit. Ich glaube, ich bin zeigt auf Speicher, der passiert, richtig zu sein, aber der bereits freigegeben wurde.

Versuchte ich mit einem PInvoke-code-gen-Dienstprogramm namens "P/Invoke Interop Assistant". Es gab mir die Ausgabe:

[System.Runtime.InteropServices.DLLImportAttribute(_dllLocation, EntryPoint = "foo")]
public static extern System.IntPtr foo();

Ist das richtig? Wenn ja, wie konvertiere ich diese IntPtr, um einen string in C#?

InformationsquelleAutor der Frage Brandon | 2008-12-15

Schreibe einen Kommentar