eine fremde DLL in eigenes projekt einbinden



  • Hi

    ich weiß das ist was, was man irgendwo nachlesen können sollte. ich habe jetzt lange gelesen und eine menge gelern. ich bekomme es trotzdem nicht hin.

    erstmal was ich habe.
    ich habe die DLL und eine .lib mit gleichen name und eine .h ebenfals mit gleichen name.

    als erstes habe ich ganz verwegen versucht einfach die .h einzubinden, was mir der kompiler mit 156 fehlern und 17 wahrungen übel genommen hat. netter kompiler, aber er hat ja recht.

    dann musste ich ein wenig lesen, was mich zu der erkenntnis gebracht hat das den linker die .lib übergeben muss. also habe ich die beim linker eingetragen (konfigurationseigenschaften/Linker/zusätzliche abhänigkeiten).
    Darauf die selbe fehlermeldung.
    ich dachte mir vieleicht findet er die .lib nicht und habe sie in jedes in den suchpfaden angegeben verzeichniss kopiert. was aber auch nicht zum erfolg führte.

    und da ich nicht weiter weiß und auch ncihtmehr weiß wo ich suchen soll meine frage hier 🙂 wie binde ich diese doofe DLL in mein projekt ein.

    mit diese doofe DLL ist FTD2XX.dll gemeint. kann man im internet runterladen und dient dazu ein usb-serial-wandlerchip anzusprechen ohne den umweg über einen emulierten RS232-port.

    danke
    LoM



  • Google spuckt mit dem Begriff "FTD2XX.dll" ein paar Interessante Sachen aus.
    Schau mal ob da was hilfreiches bei ist.

    (Welche Meldungen gibt Dir denn der Compiler aus ? Wo finde ich die DLL, ich hab mit FTD2XX.dll auf die Schnelle nur eine menge Beiträge gefunden die sich mit Problemen beim einbinden beschäftigen)



  • die DLL gibt es bei.

    http://www.ftdichip.com/
    tieflink
    http://www.ftdichip.com/Drivers/D2XX.htm

    er meldet beim kompilieren das z.B. :
    error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'FT_HANDLE'

    der fehler liegt in der .h

    typedef PVOID	FT_HANDLE;
    

    er erkennt also das PVOID nicht. hab da irgendwas übersehen 😞



  • typedef void *PVOID;
    

    Deklariert in der windows.h (genauer winnt.h).

    Includiere also mal die windows.h



  • ich bin zu doof glaube ich.

    ich habe die windows.h included. erstmal in der datei wo ich auch die ftd2xx.h included hab. doch da ist das gleiche problem.

    dann hab ich die datei in der ftd2xx.h included, doch da kann ich windows.h nicht includen weil "fatal error C1083: Datei (Include) kann nicht geöffnet werden: "windows.h": No such file or directory"

    ich geb heute erstmal auf und zocke irgendwas, mache das morgen weiter.



  • kann es sein das ich die windows.h wirklich nicht haben? muss ich die erst runterladen?
    also das komplette platform SDK?



  • Solltest du die windows.h nicht besitzen, kommst du um das Plattform SDK nicht rum. Welche IDE verwendest du? Einige, vorallem kostenlose von Microsoft, liefern das Plattform SDK nicht mit.



  • so hab es jetzt hinbekommen.

    musste wirklich die windows.h einbinden.

    dazu musste ich aber die Plattform SDK von M§ runterladen und installieren, dann habe ich noch die verzeichnisse (include und lib) aus der SDK der IDE mitgeteilet. dann ging es.

    danke dir mal wieder knuddel. ich komme halt mehr von der hardwareseite und daher muss ich noch viel lernen.



  • Du hast VS2005 EE ?

    Was helfen betrifft kein Thema, dafür drück halt nen Auge zu wenn ich mich daneber formuliere - oder besser - hilf anderen wo es geht 🤡 Hardwarenahe z.B. kann noch sehr hilfreich werden hier im Forum 🤡



  • @Kevinus

    ich habe die kostenlose version von Visual studio C++. du hast recht die windows.h ist nicht bei. hab mir die platform SDK runtergeladen. damit geht es.

    @knuddelbaer
    wenn du mal einen µC benutzen möchtest um irgendwas lustiges damit anzustellen. da kann ich schon eher helfen. dann kommst du aber nicht darum dich mit ASM zu beschäftigen 🙂
    ich kenne leute die haben hochsprachen nurnoch für die oberfläche benutzt und den rest in ASM geschrieben, weil das um den faktor 100-10000 mal schneller ist 😉



  • Assembler is ne weile her, Die 68k Familie.

    Btw.: Auch andere im Forum können Deine Hilfe brauchen 🤡



  • hier im forum geht es ja nur um x86 ASM. da fehlt mir auch die erfahrung. beim PC finde ich es wichtiger, lesbaren code zu schreiben. natürlich soll er nicht zu langsam sein. ASM ist nun alles andere als leicht lesbar. es ist nicht unmöglich nur dauert es deutlich länger 🙂
    und in der ASM Forumüberschrift wird erwähnt das man den lötkolben stecken lassen soll 😉



  • xlomx schrieb:

    so hab es jetzt hinbekommen.

    musste wirklich die windows.h einbinden.

    dazu musste ich aber die Plattform SDK von M§ runterladen und installieren, dann habe ich noch die verzeichnisse (include und lib) aus der SDK der IDE mitgeteilet. dann ging es.

    Hi xlomx,

    ich glaube ich habe exakt das gleiche Problem wie du.

    Bin auch ein C++ Anfänger und möchte die "FTD2XX.dll" in meinem Projekt einbinden, und zwar in einer eigenen DLL.
    Die Beispiele auf der FTDI-homepage sind ja bezogen auf die 2005er Express Edition leider veraltet...
    Wie hast du es hinbekommen, diese unmanaged FTD2XX.dll in einem CLI-Projekt ans laufen zu bekommen?

    Du würdest mir einen Gefallen tun, wenn du mir das beschreiben könntest!
    Je ausführlicher, desto besser.
    Danke.

    Gruß



  • Hm, wieso sind die Beispiele veraltet ?



  • Gut, ob sie das alle sind will ich jetzt nicht behaupten, aber ich habe mir speziell das Beispiel 2 unter http://www.ftdichip.com/Projects/CodeExamples/VC++.htm angeschaut.

    Für mein Verständnis ist dabei die Datei "devFTDI.h" für die Verwendung der FTDI-dll verantwortlich.
    Und in dieser Datei steht schon in Zeile drei der Erste Begriff, den die aktuelle Express Edition nicht mehr kennt:

    public __gc class devFTDI
    

    Soweit ich das jetzt herausbekommen habe, muss das neuerdings so heißen:

    public ref class devFTDI
    

    Da der compiler mich auch mit diversen Fehlern beglückt dachte ich halt, dass einige davon auch von geänderter Sprache sein könnten?
    Vielleicht täusche ich mich auch...
    Aber das werdet ihr micher sicherlich sagen können. 🙂



  • Ah ok, ich stand mal wieder auf dem Schlauch.

    Details zu den Änderungen findest Du hier:
    http://msdn2.microsoft.com/de-de/library/ms235289(VS.80).aspx

    Du kannst aber auch mal hier schauen:

    Managed C++ to C++/CLI Conversion Tool from Microsoft
    If you have larger source codes, which uses managed C++ (VC2003) and you want to move to VC2005 with the new syntax (C++/CLI) you now can use the new VC++ 2003 Managed Extensions to VC+2005 C+/CLI Conversion Tool

    http://blog.kalmbachnet.de/ => December 8, 2006



  • Die erste Seite kannte ich schon, trotzdem danke.
    Das Tool werde ich mir mal genauer anschauen, und dann shcreiben was dabei rausgekommen ist.

    Aber ich hab das Gefühl, dass die ganzen Fehler nicht nur von den Sprachunterschieden sind, sondern ich auch noch was grundlegendes falsch mache...

    Die windows.h habe ich auch nicht auf dem Rechner, und wenn ich nach "Platform SDK" bei MS suche, dann kommt eine 404-Fehlermeldung.
    Wo und wie bekomme ich die windows.h (und vll noch andere notwendige Dateien) auf den Rechner, wenn diese nicht bei der Express Edition mit dabei sind?

    Ich hoffe ja auch noch auf die Beschreibung von xlomx wie die Lösung war, wäre klasse!

    Gruß





  • hi nibbler

    die platform sdk brauchst du erstmal, sonst geht es nicht.

    ich kann dir leider erst am montag schreiben, wie ich es genau gemacht habe.
    also mit code und so.

    aber grob kann ich sagen, ich habe eine managed C++/CLI klasse erstellt. und in dieser habe ich dann dynamisch auf die FTDI2XX.dll gelinkt.
    dazu habe ich die .h datei von FTDI included und beim linker die .lib angegeben. mit den in der header-datei angegebenen funktionen bediene ich dann die USB-Schnittstelle. Solange du nicht den FT232 programmieren möchtest ist die Dokumentation von der FTDI homepage relativ einfach. man kann die Beispiele öffnen, lesen, schreiben, schließen auch direkt per copy&paste übernehmen, nur kleinigkeiten sind zu ändern, die hauptsächlich wegen uni-code sind. den FTHandler musst du als Zeiger deklarieren. sonst akzeptiert der compiler das nicht.
    Ich finde M$ hat das mit den unmanaged und managed code mischen gut gelöst. man muss nur kleinigkeiten wissen damit es funktioniert.

    montag werd ich nochmal genauer schreiben wie ich es gemacht habe. schaffst du es ja auch mit den informationen.



  • Ok, das Platform SDK lade ich gerade runter, werde das dann gleich installieren.

    ich kann dir leider erst am montag schreiben, wie ich es genau gemacht habe.
    also mit code und so.

    Wenn du das präziser erklären kannst (auch an welchen Stellen im Menü die .lib und die .dll angegeben werden müssen - ich hab da keine Ahnung von), wäre nett.
    Ich habe noch keinen richtigen Durchblick...

    Programmieren will ich den FT232 nicht, nur benutzen.
    Klar, Änderungen der Baudrate zB müssen schon gehen, aber das verstehe ich nicht unter programmieren.

    den FTHandler musst du als Zeiger deklarieren. sonst akzeptiert der compiler das nicht.

    FTHandler, Zeiger... Ich verstehe nichts 😉

    Dann bin ich jetzt mal gespannt auf die genauere Erklärung! 🙂

    Gruß


Anmelden zum Antworten