Einbinden von DLLs in BDS2006



  • Hallo,

    Ich versuche verzweifelt mehrere dll's in ein BDS2006 Projekt einzubinden.
    Bis jetzt hatte ich immer .lib + .h Dateien mit denen ich arbeiten konnten.
    Nun ist es leider nicht mehr so und ich befinde mich derzeit in einer Sackgasse.
    Bei meiner Suche im Internet bin ich auf den Befehl import gestoßen.
    In der Hilfe wird darauf verwiesen, dass man anstatt import TLIBIMP.exe oder den Weg über "Typenbibliothek importieren" wählen soll.
    Wenn ich das Dialogfenster für Typenbibliothek importieren öffne und meine DLLs installiere, dann sind die Klassen im Class Explorer sichtbar. Mit diesen Klassen kann ich jedoch nichts anfangen, da kein Bezug zu meinem Projekt besteht. Kann mir bitte jemand weiterhelfen, wie ich die Funktionen der Dll in meinem Projekt verwenden kann.

    Danke für jede Antwort.

    LG

    Andi



  • Petsche schrieb:

    Kann mir bitte jemand weiterhelfen, wie ich die Funktionen der Dll in meinem Projekt verwenden kann.

    .lib zum Projekt hinzufügen.

    Wenn es nicht funktioniert: bitte mehr Informationen. Mit dem, was du da geschrieben hast, wird dir keiner helfen können.



  • Ok: Ich versuche mein Propblem besser zu beschreiben.
    Ich muss mein Oszilloskop von Tektronix fernsteuern.
    Dazu bietet Tektronix ein dll an -> TekScope.dll.
    Leider gibt es dazu keine lib und header Datei.

    Welche Schritte muss ich durchführen um die dll einzubinden?
    Oder kann ich aus der dll eine lib und header Datei erstellen?



  • Petsche schrieb:

    Ok: Ich versuche mein Propblem besser zu beschreiben.
    Ich muss mein Oszilloskop von Tektronix fernsteuern.
    Dazu bietet Tektronix ein dll an -> TekScope.dll.
    Leider gibt es dazu keine lib und header Datei.

    Schon viel besser 😉

    Petsche schrieb:

    Welche Schritte muss ich durchführen um die dll einzubinden?

    implib -c TekScope.lib TekScope.dll

    Eine Headerdatei allerdings kannst du nicht generieren; wenn die wirklich nicht vorhanden ist, bleibt dir nur, die DLL mit einem Tool wie Dependency Walker oder TDUMP zu analysieren und einen Ersatz dafür zu schreiben.

    Die DLL kannst du natürlich nur im C++Builder verwenden, wenn sie sich entweder auf eine C-Schnittstelle beschränkt oder mit dem BCC kompiliert wurde.



  • Kannst Du mir bitte anhand eines kurzen Beispiels zeigen, wie ich mit Hilfe des Dependency Walkers eine "Ersatz Header Datei" erstellen kann?

    Woher weiß ich bzw. wie kann ich herausfinden, ob eine dll auf eine C Schnittstelle beschränkt ist oder mit dem BCC compiliert wurde?



  • Petsche schrieb:

    Kannst Du mir bitte anhand eines kurzen Beispiels zeigen, wie ich mit Hilfe des Dependency Walkers eine "Ersatz Header Datei" erstellen kann?

    Das geht nur unter einer der folgenden Bedingungen:
    - du weißt ein klein wenig über die DLL und die exportierten Funktionen, z.B. kennst du ein Verwendungsbeispiel im Source-Code.
    - die Funktionen wurden als C++-Funktionen kompiliert, beschränken sich aber auf eine C-Schnittstelle. Dann sind die Funktionsparameter in den Funktionsnamen codiert und können verwertet werden.
    - die DLL wurde mit dem BCC übersetzt. Dann sind auch C++-Sprachmittel im Interface benutzbar und können aus den Funktionsnamen hergeleitet werden.

    Werden aber Datentypen ausgetauscht, deren Definition du mangels einer Header-Datei nicht kennst, so wirst du in den letzten beiden Punkten auf massive Probleme stoßen.

    Petsche schrieb:

    Woher weiß ich bzw. wie kann ich herausfinden, ob eine dll auf eine C Schnittstelle beschränkt ist oder mit dem BCC compiliert wurde?

    Am einfachsten wird es sein, wenn du die Namen der von der DLL exportierten Funktionen, die du mit dem Dependency Walker auslesen kannst, mal hier reinpostest.

    Allerdings kann ich kaum glauben, daß es zu dieser DLL, wenn sie wirklich für die Verwendung in Fremdprogrammen vorgesehen ist, keine Headerdatei gibt. Vielleicht solltest du da noch einmal nachforschen.


Anmelden zum Antworten