Announcement

Collapse
No announcement yet.

Delphi 6 DLL in C# aufrufen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Delphi 6 DLL in C# aufrufen

    Hallo

    Ich muss in C# Prozeduren aus einer mit Delphi 6 erstellten DLL aufrufen. Siehe Beispiel-DLL weiter unten.

    Kann mir jemand zeigen wie die Prozedur AddString aus der DLL in C# aufgerufen wird? (Vielleicht muss auch der Code der DLL angepasst werden).

    ** Vielen Dank für die Mühe **

    Herzliche Grüsse
    Marco

    Beispiel - DLL:
    ----------------
    library TestDLL;
    uses SysUtils, Classes;
    {$R *.res}
    Procedure AddString(StringA, StringB, ResultString : PChar);stdcall;
    Var sA, sB, sC : ShortString;
    Begin
    sA := ShortString(StringA);
    sB := ShortString(StringB);
    sC := sA + sB;
    StrPCopy(ResultString, sC);
    end; { AddString }

    exports AddString;

    begin { Unit }
    end. { Unit }

  • #2
    Hi,

    ich finde solche einfachen Funktionen sollte man in C# realisieren.
    Der Overhead und die Performanceeinbuße durch Interop steht dem Nutzen nicht gegenübe

    Comment


    • #3
      Hallo Henry

      Da hast Du vollkommen recht.
      Hier geht es nur um das Prinzip. Die Prozeduren, welche ich aufrufen muss sind natürlich wesentlich komplexer.
      Ich möchte nur lernen wie es geht.

      Herzliche Grüsse
      Marc

      Comment


      • #4
        Hallo Marco,

        Der Aufruf von AddString könnte so aussehen:

        Zunächst die Methode (innerhalb einer Klasse) definieren

        [DllImport("TestDLL.DLL", EntryPoint = "AddString", SetLastError = true,
        CharSet = CharSet.Ansi, ExactSpelling = true,
        CallingConvention = CallingConvention.StdCall)]
        public static extern void AddString(String stringA, string stringB,
        [Out] StringBuilder stringC);

        und dann aufrufen mit:

        int maxLen = 255;
        StringBuilder s = new StringBuilder(maxLen);
        AddString("eins", "zwei", s);
        Console.WriteLine(s.ToString());

        Das ist alles.

        Ich empfehle Dir die VisualStudio-Hilfe . Suche mal nach DLLImport.

        Beispiele in Hülle und Fülle findest Du auch auf: www.pInvoke.Net.

        Gruß
        Pete

        Comment


        • #5
          ** Vielen Dank Peter **
          Ich werde es, gemäss Deinem Vorschlag, probieren.

          Herzliche Grüsse
          Marc

          Comment

          Working...
          X