DLL mit VC++ erstellen



  • Hallo,

    auf die Gefahr hin daß ich jetzt für diese Frage gesteinigt werde, stelle ich sie trotzdem (bitte veschont mich).

    Ich möchte mit VC++ eine DLL erstellen die dann unter DELPHI benutzt werden soll!

    Ich habe mir jetzt schon einige Tut durchgelesen, leider benutzen die Meisten unterschiedliche Befehle!

    Ist es möglich eine DLL zu erstellen die eine cpp und zwei h Dateien enthält?

    Wie muß man dann die DLL in VC++/DELPHI aufrufen, ich habe es in VC++ über das inkludieren der h Datei versucht leider kommt dann immer Linker Error 1120

    Ich stelle mir das ganze vielleicht etwas zu einfach vor, es muß doch möglich sein eine DLL zu schreiben und sie dann zb wie in VB aufzurufen!

    Danke schon mal für euer Verständnis und eure Antworten!

    MfG
    AlbertT



  • An sich schon... ich würd' dann halt GetProcAddress benutzen. Klar kann man DLLs mit zwei Headern schreiben, du musst nur die benötigen Funktionen exportieren.

    cya 🙂



  • Hi,

    danke für deine Antwort, leider konnte mir das auch nicht viel helfen, mich interessiert mehr WIE ich das ganze dann machen muß.

    Ich habe jetzt ein h File mit allen Benötigten Konstanten
    eines mit den Funktions Prototypen und ein cpp File mit den Funktionen.

    Im h File mit den Protypen haben ich sie so definiert:
    __declspec(dllexport) Rückgabetyp Funktionsname(parameter);

    Im cpp File steht dann:
    __declspec(dllexport) Rückgabetyp Funktionsname(parameter)
    {}

    Wo muß jetzt das mit DllEntryPoint stehen? Wie rufe ich dann diese DLL von wo anders wieder auf?



  • Wie muß man dann die DLL in VC++/DELPHI aufrufen, ich habe es in VC++ über das inkludieren der h Datei versucht leider kommt dann immer Linker Error 1120

    Linker Error heißt dort, das er nur Funktionsdefinition (Header gefunden hat), aber keinen Verweis auf die Funktion selbst.
    Also in C gibt es zwei Möglichkeiten. Entweder du nimmst die DLL und den Header(Header für Funktionsdefinition). Und lädst die DLL - Fkt mit LoadLibrary(..). Oder du nimmst die DLL, den Header und die Lib und linkst die Lib statisch dazu.
    Beide Varianten führen rein Aufruftechnisch zum gleichen Ergebnis. Ich weiß aber leider nicht welche Möglichkeiten es da in Delphi gibt. Ich vermute es ist nicht egal, welche Aufrufkonventionen du da bei Erstellen der DLL verwendest. Selbst in C giebt es da mitunter schon Probleme bei DLLs, die z.B. im Borland Builder erstellt und dann im VC verwendet werden sollen.



  • Gibt es dann keine Möglichkeit die DLL aufzurufen ohne etwas anderes als die DLL einzubinden?

    Was hat es mit dieser 'Aufrufkonventionen' auf sich? Welche verschiedenen gibt es da?

    THX4RE

    AlbertT



  • Gibt es dann keine Möglichkeit die DLL aufzurufen ohne etwas anderes als die DLL einzubinden?

    Ja, wie gesagt in WinaApi mit LoadLibrary(...). Deplhi weiß ich nicht.

    __declspec(dllexport) sollte OK sein. Ich meinte nur, das es eventuell Probleme geben wird, wenn du im VC z.B. eine MFC-Extension-DLL erstellst und die dann irgendwo anders einbinden willst.
    Einfachste Variante ist aber immer noch, in dem VC - Projekt, wo du die DLL benutzen willst den Header und die Lib hinzuzufügen und fertig.

    -> auch wenn das ganze jetzt WinaApi-mäßig etwas aus dem Ruder läuft....


Anmelden zum Antworten