Macros hat geschrieben:Da drängt sich mir gerade die Frage auf:
Wie verwendet man eine DLL am saubersten?
In der PB Hilfe gibt ja gleich 3 Wege:
- Callfunction (nicht sauber)
- Import
- Prototypes
Was sind die Vor und Nachteile?
Bei Prototypes schon mal, dass die Autovervollständigung nicht mitspielt.
CallFunction fällt schon mal weg, das ist nicht Typensicher, der Compiler kann weder
die Anzahl der erforderlichen Parameter noch ihren Typ bestimmen!
Wenn eine DLL unbedingt für das Programm erforderlich ist, bietet es sich an den
Import zu nutzen. Dies entspricht einer frühen Bindung. Nachteil:
wird die DLL nicht gefunden, kann man den Fehler nicht auffangen, da er von
Windows behandelt wird (DLL fehlt, Neuinstallation sollte helfen oder so ähnlich).
Mit Polib (im PB-Compilers Verzeichnis) kann man sich recht einfach eine passende Lib
erzeugen, falls nicht vorhanden.
Mit OpenLibrary und Prototypes bietet sich an, wenn die DLL dynamisch, (späte Bindung)
geladen werden soll. Wenn eine DLL nicht unbedingt erforderlich ist, bzw. nur auf
bestimmten OS usw. bietet sich dies an. Das Programm kann selber auf nichtvorhandene
DLL reagieren. Sicherheitsrisiko ist größer da DLL Injection einfacher.
Importzeilen sind auch eine Art Prototype! Import ist die schnellste Möglichkeit.
OpenLibrary also nur nutzen, wenn man eines der Vorteile benötigt oder man es nicht
schafft, sich eine fehlende ImportLib zu erzeugen.
Gruß
Thomas