Announcement

Collapse
No announcement yet.

Delphi-DLL in C++-Anwendung einbinden

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

  • Delphi-DLL in C++-Anwendung einbinden

    Ich habe in Delphi eine DLL geschrieben.<br> Möchte nun testen, ob sie auch nach dem Aufruf aus einer Anwendung in C++ läuft.<br>
    Habe in der C++ Anwendung einfach nur einen Button<br> auf dessen Click die DLL ausgeführt werden soll.<br>
    Wie binde ich sie in C++ ein und wie sieht dann der Aufruf aus?<br>
    Kann mir da jemand weiterhelfen?<br>
    Danke im Vorraus<br>
    Bea

  • #2
    Hallo Beate,<br>
    es gibt zwei verschiedene Möglichkeiten.<br>
    1. statische Bindung<br>
    In diesem Falle sollte Dir die .lib und .h Datei zu Deiner Dll zur Verfügung stehen. Ist aber kein Problem da Du ja die Dll selber geschrieben hast.<br>
    Füge die .lib Datei Deinem C++ Projekt hinzu, kopiere die Headerdatei und die Dll in dein Projektverzeichnis.<br>
    Danach kannst Du die Funktionen Deiner Dll ganz normal verwenden, wie alle anderen Bibliotheksfunktionen, sofern sie exportiert sind. Die Dll wird auch automatisch geladen.<br>
    2. dynamische Bindung<br>
    Bei dieser Variante brauchst Du nur die Dll.<br>
    Für die Funktionen die Du benötigst musst Du Zeiger auf Funktionen als Prototypen erstellen.<br>
    Für eine Funktion <b>int DoSomeThing(int x, int y);</b><br>
    sieht der Prototyp so aus <b>int (*DoSomeThingPtr)(int, int);</b><br>
    Für den Aufruf, muss die Dll geladen und die Funktionsadresse aus der Dll extrahiert werden. Danach kann man die Funktion über den Definierten Zeiger ansprechen.<br><br>
    HINSTANCE dllInstance;<br>
    AnsiString dllName = "MyDll.Dll";<br>
    int z;<br>
    int x = 0;<br>
    int y = 1;<br>
    dllInstance = LoadLibrary(dllName.c_str());<br>
    if(dllInstance != NULL) {<br>
    (FARPROC)DoSomeThingPtr = ::GetProcAddress(dllInstance, "DoSomeThing");<br>
    z = DoSomeThingPtr(x, y);<br>
    }<br>
    FreeLibrary(dllInstance);<br>

    Ich hoffe das hilft,

    Heik

    Comment

    Working...
    X