Hi miteinander,
ich würde gerne in einer Delphi-DLL (Rückgabewert ist ein zweidimensionales String-Array)
eine Funktion aufrufen, und weiß leider nicht wohin ich den Rückgabewert casten
muß.
Mein letzter Stand sieht folgendermaßen aus:
[DllImport("Delphi.dll")]
//[return: MarshalAs(UnmanagedType.ByValArray, SizeConst = 1)]
public static extern THashtable DelphiFunc(String station, String part, String afo);
public struct THashtable
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)] public string fieldname;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)] public string fieldvalue;
}
THashtable mystruct = DelphiFunc("String1", "String2", "String3");
Die Fehlermeldung lautet: "Die Typensignatur der Methode ist nicht PInvoke-kompatibel."
Die Delphi-DLL ist dynamisch und C-kompatibel (exportiert mit CDECL).
Danke und Grüße,
wiesi
[StructLayout(LayoutKind.Sequential)]
public struct THashtable
das CDECL solltest beim [DllImport] ebenfalls angeben
Um ein Zwei-Dimensionales-String-Array handelt es sich bei deiner Definition nicht (oder meinst du char-Array?)