Announcement

Collapse
No announcement yet.

Translation C --> Delphi

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

  • Translation C --> Delphi

    Hallo,
    ich möchte eine Funktion einer C DLL in meinem Delphi Prog einbinden. Wie lautet die richtige Declaration in Delphi.

    int main(const char *const argv[]);

    Vielen Dank für die Hilfe !!!

  • #2
    Nochmal dieselbe Frage

    Comment


    • #3
      Sorry, ich hab von C nicht wirklich so den Plan, jedoch weiss ich aus meiner früheren DOS-C-Zeit, dass main (...) lediglich den Hauptteil des Programmes darstellt und du diese somit auch nicht exportieren / importieren kannst, zumal in dieser Deklaration auch keine Klauseln vorhanden sind, die dem Compiler sagen, dass er sie exportieren soll. main wird sozusagen als Hauptteil eines Programmes aufgerufen und bekommt seine Parameter über die Kommandozeile oder von dem Aufrufender. Ein main-Äquivalent, was seine Parameter von der Kommandozeile bekommt, ist in Pascal / Delphi z.B.
      <pre>
      <b>program</b> BlaBlub;
      <b>procedure</b> XYZ;
      <b>begin</b>
      ...
      <b>end;</b>
      // void / int main (const char *const argv[])
      <b>var</b>
      a: Integer;
      <b>begin</b>
      <b>for</b> a := 1 <b>to</b> ParamCount do
      // ParamStr entspricht argv
      WriteLn (ParamStr (a));
      XYZ;
      ...
      <b>end;</b>
      </pre>
      Das einzige was ich mir vorstellen kann, das mit main () in einer DLL die DLLMain-Prozedur gemeint ist, diese ruft sich jedoch IMHO selber beim Laden auf und braucht nicht extra exportiert und woanders importiert zu werden.

      Hoffe, das war etwas nützlich.

      Grüße,
      Mari

      Comment


      • #4
        Ich finde den Namen 'main' auch nicht so gut für eine DLL Routine. Ansonsten willst du doch bloss eine Routine aus einer DLL aufrufen.
        Folgendes in eine UNIT einfügen:

        // Nach INTERFACE

        function main(argv : PChar) : integer;

        // Nach IMPLEMENTATION

        function main; EXTERNAL 'test.dll' INDEX 123;

        Danach kannste die Funktion von Delphi aus verwenden, wenn du die UNIT mit der Redeklaration immer schön einbindest

        Comment


        • #5
          Nochmals diese Frage wurde bereits gestellt (sogar vom selben Autor) und m.E. sehr erschöfend beantwortet: http://www.entwickler-forum.de/WebX?128@@.2cb7d659

          Grüße Joche

          Comment

          Working...
          X