Laden...

Konvertierung von Delphi-Datentypen nach C# (DllImport)

Erstellt von wiesi vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.350 Views
wiesi Themenstarter:in
89 Beiträge seit 2005
vor 16 Jahren
Konvertierung von Delphi-Datentypen nach C# (DllImport)

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

S
8.746 Beiträge seit 2005
vor 16 Jahren
[StructLayout(LayoutKind.Sequential)]
public struct THashtable
  1. das CDECL solltest beim [DllImport] ebenfalls angeben

  2. Um ein Zwei-Dimensionales-String-Array handelt es sich bei deiner Definition nicht (oder meinst du char-Array?)