Forum: PC-Programmierung Kann man die FTD2XX.DLL in eine .exe einbinden?


von DelphiDoedl (Gast)


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!

von dll-merger (Gast)


Lesenswert?

google ILMerge

von __tom (Gast)


Lesenswert?

dll-merger schrieb:
> google ILMerge

ilmerge funktioniert aber nur für managed assemblies, das dürfte eine 
native anwendung und eine native dll sein...

von tropf (Gast)


Lesenswert?


von Rufus Τ. F. (rufus) Benutzerseite


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

von DelphiDoedl (Gast)


Lesenswert?

Danke Rufus,

das hilft mir Prog-Prolet bislang am ehesten.
Da werde ich mich mal durchkämpfen. Das ist jedenfalls auch ein 
sinnvoller Ansatzpunkt.

von Arc N. (arc)


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...

von DelphiDoedl (Gast)


Lesenswert?

sorry für die späte Rückmeldung.
Ja, danke "Arc Net", das ist eigentlich die einfachste Variante. Da 
sollte keiner schimpfen müssen, wenn er die DLL mit ins Verzeichnis 
kopiert wird.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.