In welchem Verzeichnis muss die Library sqlite3.dll abgelegt werden?

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Benutzeravatar
gladio
Beiträge: 217
Registriert: Sa 21. Jun 2014, 06:15
OS, Lazarus, FPC: Win10-64 - aktuelle Lazarus/FPC Standard-Edition
CPU-Target: 64Bit
Wohnort: Rügen

Re: In welchem Verzeichnis muss die Library sqlite3.dll abgelegt werden?

Beitrag von gladio »

und müsste nicht auch das Programm wissen, wo es nach der DLL suchen soll... LibraryLocation ?

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: In welchem Verzeichnis muss die Library sqlite3.dll abgelegt werden?

Beitrag von af0815 »

gladio hat geschrieben:
Di 3. Jan 2023, 13:35
und müsste nicht auch das Programm wissen, wo es nach der DLL suchen soll... LibraryLocation ?
Nicht unbedingt, es wir im Systempfad für die Libs und dann im Verzeichnis der Executable automatisch gesucht.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

MmVisual
Beiträge: 1445
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 3.0 FPC 3.2)
CPU-Target: 32/64Bit

Re: In welchem Verzeichnis muss die Library sqlite3.dll abgelegt werden?

Beitrag von MmVisual »

Ich nutze ebenfalls die SQLite3.dll, jedoch die 64 Bit DLL Version benenne ich immer in "SQLite3-64.dll" um, damit kann ich beide DLL's im gleichen Verzeichnis halten.

Bei der TZConnection im BeforeConnect kann ich dann diesen Code ausführen:

Code: Alles auswählen

  s := LowerCase(TZConnection(Sender).Protocol);
  if TZConnection(Sender).LibraryLocation = '' then
  begin // Nur suchen wenn leer
    {$ifdef win64}
    if Pos('sqlite', s) = 1 then
    begin
      if LoadLibTest('sqlite3-64.dll') then
      Begin
        TZConnection(Sender).LibraryLocation := 'sqlite3-64.dll';
        If ErrMessagesDebugMode >= 1 Then
          DoLog('Use LibraryLocation: ' + TZConnection(Sender).LibraryLocation);
      End;
    end
    else  
....
{$endif}
....
Das "LoadLibTest()" macht nur ein dynlibs.LoadLibrary(), damit prüfe ich relativ einfach ob die EXE diese DLL irgendwie finden kann, dann brauche ich nicht selbst danach suchen.
EleLa - Elektronik Lagerverwaltung - www.elela.de

Antworten