Kann man die FTD2XX.DLL in eine .exe einbinden?

Gast #2186013
Lesenswert?

Hallo Könner,
hier fragt ein Nichtkönner.

Ich musste den FTDI-USB<->RS232 Support in eine Software (unter Delphi 
10). einbinden. Die FTDI-Nutzung ist nur eine Option, die Software soll 
auch ohne angehängten FTDI funktionieren.
Wenn ich den Treiber und die FTD2XX.DLL installiere ist das auch alles 
möglich.
Ist die FTD2XX.DLL nicht installiert, so meldet die Software 
verständlicherweise einen Fehler, wenn ich diese starte. Die Software 
soll allerdings auch als einzelne exe-Datei ohne diese DLL startbar sein 
(ohne Nutzung der USB-Funktionalität) und nur derjenige, der den FTDI 
braucht soll das Treiber- und DLL-Zeugs nachinstallieren müssen.
Kann man daher zumindest die DLL einbinden, so dass diese nicht zwingend 
als separate Datei installiert werden muss oder gibt es andere schlaue 
Lösungen für mein unkonventionelles Problem?

Hinweis:
Ich bin ein äußerst schlechter Windows- und Delphiprogrammier, muss das 
aber machen...
Danke vorab für die schlauen Profi-Tips!
Persönliche Seite #2186069
Lesenswert?

Wenn Du die Prozedureinsprungspunkte* in die DLL zur Laufzeit bestimmst, 
dann kannst Du das Fehlen der DLL abfangen.

Die übliche Vorgehensweise ist in diesem Fall das manuelle Laden der DLL 
mit der Win32-API-Funktion LoadLibrary. Wenn das klappt, sind die 
Adressen der Dich interessierenden Funktionen in der DLL mit der 
Win32-API-Funktion GetProcAdress zu bestimmen.

Das ist natürlich umständlicher als der "klassische" Weg über eine 
Importlibrary, hat aber den Vorteil, daß das Laden der DLL halt erst 
dann geschieht, wenn das Programm es will, und so ein sinnvolles 
Fehlerverhalten möglich ist.

Wie das ganze nun mit Delphi abzuwickeln ist, wirst Du mit der 
Internetsuchmaschine Deiner Wahl und der Kombination von "Delphi" mit 
den Namen der beiden genannten Funktionen herausfinden können.

Viel Erfolg!



*) ich kann nichts dafür, aber so nennt Microsoft das auf Deutsch
#2186289
Lesenswert?

DelphiDoedl schrieb:
> Hallo Könner,
> hier fragt ein Nichtkönner.
>
> Ich musste den FTDI-USB<->RS232 Support in eine Software (unter Delphi
> 10). einbinden. Die FTDI-Nutzung ist nur eine Option, die Software soll
> auch ohne angehängten FTDI funktionieren.
> Wenn ich den Treiber und die FTD2XX.DLL installiere ist das auch alles
> möglich.
> Ist die FTD2XX.DLL nicht installiert, so meldet die Software
> verständlicherweise einen Fehler, wenn ich diese starte. Die Software
> soll allerdings auch als einzelne exe-Datei ohne diese DLL startbar sein
> (ohne Nutzung der USB-Funktionalität) und nur derjenige, der den FTDI
> braucht soll das Treiber- und DLL-Zeugs nachinstallieren müssen.
> Kann man daher zumindest die DLL einbinden, so dass diese nicht zwingend
> als separate Datei installiert werden muss oder gibt es andere schlaue
> Lösungen für mein unkonventionelles Problem?

Darf die FTD2XX.DLL nicht ins Verzeichnis der Anwendung kopiert werden 
(während der Installation) oder warum so umständlich?
Der Treiber kann dann immer noch nachinstalliert werden...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren