Wichtig ist, dass die Bitness (32 vs. 64-bit) der
FB Clientbibliothek gleich der Client-Anwendung ist. D.h. eine 32-bit Delphi Anwendung wird mit der fbclient.dll aus einem 64-bit Firebird \bin Verzeichnis nichts anfangen können.
Genau
Und deshalb lege ich meinen Bin-Verzeichnissen stets auch die entsprechenden
DLL-Varianten bei und lasse meine Anwendung die DLLs im Programmverzeichnis verwenden. Bei Firebird Embedded soll die Anwendung ja auch auf Rechnern ohne installierten Firebird-Server laufen, was nur möglich ist, wenn ich die Embedded-
DLL mitgebe. Um dieselbe Anwendung ohne Neukompilierung einmal als Server- und ein andermal als Embedded-Variante starten zu können, empfiehlt es sich, die entsprechenden Daten beim Start abzufragen: entweder via Ini-Datei oder Registry-Eintrag oder als Startparameter. Wenn ich Startparameter verwende, dann startet meine Anwendung ohne die Angabe von Startparametern stets als Embedded-Variante. Ich regle das inzwischen so, daß stets zwei Parameter angegeben werden (können): 0 oder 1 für Embedded oder Server, und ein String mit dem Namen für den Ordner, in dem sich die
DB befindet. Als dritter Parameter wäre u.U. denkbar, auch den Speicherort der fbclient.dll anzugeben, da es zu Konflikten kommen kann, wenn ein Anwender zwar die Server-Variante nehmen will, aber einen veralteten Firebird-Server installiert hat.
Übrigens sollte man nicht die 32-/64-Bit-Architektur der Datenbank-Anwendung, die jeweils eine 32-/64-Bit-Client-
DLL benötigt, mit der 32-/64-Bit-Architektur des installierten Firebird-Servers oder gar des eingesetzten Betriebssystems verwechseln – ist natürlich nicht an dich adressiert, Thomas