Zeos kann Datenbank DLL nicht laden?

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
MmVisual
Beiträge: 1605
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4.2 FPC 3.2.2)
CPU-Target: 32/64Bit

Zeos kann Datenbank DLL nicht laden?

Beitrag von MmVisual »

Hallo,

Ich habe ein kurioses Problem. Meine EXE, 64 Bit, DLL ebenfalls 64 bit, auf meinem Entwicklungsrechner funktioniert beides problemlos.
Bei einem anderen Rechner hingegen kommen mit den exakt gleichen Dateien dann dieser Fehler:

Client-Library C:\NetShare\KonfigProgram\sybdb.dll found but could not be loaded. Check compile-target and library compatibility! (FormShow)/( $00000001000238FC)

Darauf hin habe ich das Programm auch mal als 32 Bit übersetzt und - wie zu erwarten - die gleiche Fehlermeldung.

Der Test:
h := dynlibs.LoadLibrary(PAnsiChar(DB.LibraryLocation));
zeigt ebenfalls dass die DLL von der EXE nicht geladen werden kann.

Für mich sieht es so aus als ob Windows das Laden dieser DLL verhindert.

Die "sybdb.dll" kommt von den Quellen bei Zeos, da gibt es diese als 32 und 64 Bit Variante. Ich nutze diese DLL bereits seit einigen Jahren. Doch diese Meldung, dass die DLL nicht geladen werden kann sehe ich zum ersten mal.

Weis jemand rat, was das ist?

DB.Protocol = "FreeTDS_MsSQL>=2005"
Die anderen Parameter sind ebenfalls alle gesetzt. Bzw. wenn die falsch sind, dann kommen andere Fehlermeldungen.

Vielen Dank für die Hilfe.
VG Markus
EleLa - Elektronik Lagerverwaltung - www.elela.de

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6924
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: Zeos kann Datenbank DLL nicht laden?

Beitrag von af0815 »

Die erste Frage, darf aus diesem Pfad die DLL geladen werden ? Hat der Benutzer die korrekten Rechte. Zumindest Lesen, Ausführen sollte immer dabei sein.

Wenn du die Testapp von der Adminkonsole (CMD als Admin ausführen) startest geht es dann ? Wenn ja, ist es ein Rechteproblem.

Ich bin auf eine Spezialität der FreeTDS gestossen, in Win11 auf einen speziellen Prozessor mit AI Funktionen (nagelneuster Laptop) ist die DLL auch nicht zum laden gegangen, erst eine absolut neu kompilierte DLL hat dann funktioniert. War aber sicher ein Spezialfall. Kennzeichen war, Programm mit DLL auf einen anderen PC hat immer funktioniert, egal welcher Benutzer.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

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

Re: Zeos kann Datenbank DLL nicht laden?

Beitrag von MmVisual »

Ja, genau so ist mein Problem wie du es auch hattest. CMD als Admin >> Exe geht ebenfalls nicht.

Hast du mir einen Tipp wie ich zu einer neuen sybdb.dll komme? Oder kannst du mir deine (64 Bit) anhängen?
Thx. Markus
EleLa - Elektronik Lagerverwaltung - www.elela.de

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6924
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: Zeos kann Datenbank DLL nicht laden?

Beitrag von af0815 »

MmVisual hat geschrieben: Fr 1. Aug 2025, 16:08 Ja, genau so ist mein Problem wie du es auch hattest. CMD als Admin >> Exe geht ebenfalls nicht.

Hast du mir einen Tipp wie ich zu einer neuen sybdb.dll komme? Oder kannst du mir deine (64 Bit) anhängen?
Thx. Markus
Anhängen geht nicht mehr, da ich nicht mehr in der Firma arbeite. Ich habe die damals von einem Buildserver geholt, der die FreeTDS automatisch neu baut, soviel habe ich noch in Erinnerung.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

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

Re: Zeos kann Datenbank DLL nicht laden?

Beitrag von MmVisual »

Hier meintest du?

https://ci.appveyor.com/project/FreeTDS/freetds

Und dann hier:
https://ci.appveyor.com/project/FreeTDS ... /artifacts


Es sieht jetzt ander aus:
E: DBError : [20011] : Maximum number of DBPROCESSes already allocated (FormShow)/( $00000001000238FC)
Fehlt beim Build das "MARS CONNECTION=TRUE"?
EleLa - Elektronik Lagerverwaltung - www.elela.de

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6924
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: Zeos kann Datenbank DLL nicht laden?

Beitrag von af0815 »

MmVisual hat geschrieben: Fr 1. Aug 2025, 17:36 Und dann hier:
https://ci.appveyor.com/project/FreeTDS ... /artifacts
Ja, genau von dort haben wir die lauffähige Version bekommen. Frag mich nur nicht welche das war.

Geht ein kurzes Testprogramm mit den neuen Treiber ?
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

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

Re: Zeos kann Datenbank DLL nicht laden?

Beitrag von MmVisual »

Ich habe nun sämtliche Versionen ausprobiert, 2013 ... 2022.
Es kommt immer die gleiche Fehlermeldung
Maximum number of DBPROCESSes already allocated
Ich habe ein kleines Test Projekt gemacht, mit nur TZConnection und einem Button für Connect und die Parameter im Objektinspektor gesetzt.
Mit der alten Zeos DLL geht es, jedoch alle neue DLL's zeigen den Fehler bereits beim Connect von TZConnnection.

Kannst du mir am Montag bitte deine DLL senden?

Ältere Artefakte kann man leider vom Buildserver nicht laden, die sind automatisch gelöscht.
Im Build Log vom Buildserver sieht man auch dass MarsConnection aktiviert ist. Daran kann es nicht liegen. Auch ist in meinem Testprojekt nur die TZConnection, keine Query.

Dankeschön, VG Markus
EleLa - Elektronik Lagerverwaltung - www.elela.de

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6924
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: Zeos kann Datenbank DLL nicht laden?

Beitrag von af0815 »

Eine Frage noch, welche ZEOS Version?
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

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

Re: Zeos kann Datenbank DLL nicht laden?

Beitrag von MmVisual »

7.2.14, SVN 8050
Laz V4.2
EleLa - Elektronik Lagerverwaltung - www.elela.de

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

Re: Zeos kann Datenbank DLL nicht laden?

Beitrag von MmVisual »

Ich wollte nochmal fragen, hattest du Zeit mal nach der DLL zu schauen?
Thx. Markus.
EleLa - Elektronik Lagerverwaltung - www.elela.de

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

Re: Zeos kann Datenbank DLL nicht laden?

Beitrag von MmVisual »

Ich habe den Bug gefunden, es lag an Zeos:
Bild1.png
Bild1.png (10.9 KiB) 1321 mal betrachtet
Zeos hat die Zeile Assert() einfach nicht ausgeführt und damit das dbIntit() nicht.
Abgesehen davon dass es noch ein Tippfehler ist.

Vielen Dank für den Tipp mit dem Buildserver.
Ich habe den FreeTDS C-Code mit früheren Versionen verglichen und gesehen dass da alles OK sein sollte und der Fehler konnte nur dann kommen wenn man kein Socket mehr anlegen kann. FreeTDS hat eigentlich ein Array mit 4096 Sockets und das kann eigentlich ja nicht sein. So kam ich auf die Idee dass wohl die Initialisierung fehlen musste.

VG Markus
EleLa - Elektronik Lagerverwaltung - www.elela.de

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6924
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: Zeos kann Datenbank DLL nicht laden?

Beitrag von af0815 »

An und für sich habe ich im ZEOS einen Post dazu gemacht. https://zeoslib.sourceforge.io/viewtopic.php?t=250634 allerdings für ZEOS 8.0

Edit: Habe dort einen Verweis hierhin gemacht.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

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

Re: Zeos kann Datenbank DLL nicht laden?

Beitrag von MmVisual »

Ich habe das auch geschrieben, aber hier:
https://sourceforge.net/p/zeoslib/tickets/634/
EleLa - Elektronik Lagerverwaltung - www.elela.de

marsupilami
Beiträge: 2
Registriert: Mi 30. Dez 2020, 11:33

Re: Zeos kann Datenbank DLL nicht laden?

Beitrag von marsupilami »

Moin,
MmVisual hat geschrieben: Mo 4. Aug 2025, 16:32 Ich habe den Bug gefunden, es lag an Zeos:
Bild1.png
Zeos hat die Zeile Assert() einfach nicht ausgeführt und damit das dbIntit() nicht.
Abgesehen davon dass es noch ein Tippfehler ist.
dbinit wird nicht der Zeile mit dem Assert aufgerufen. In der Zeile mit dem Assert wird lediglich geprüft, ob dbinit SUCCEED zurückgliefert hat. Für die Auslieferungsversion sparen wir uns den Test. Hat FPC die Zeile mit dem dbinit wegoptimiert? Das kann ich mir nicht vorstellen?

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6924
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: Zeos kann Datenbank DLL nicht laden?

Beitrag von af0815 »

marsupilami hat geschrieben: Mo 4. Aug 2025, 19:50 Moin,
MmVisual hat geschrieben: Mo 4. Aug 2025, 16:32 Ich habe den Bug gefunden, es lag an Zeos:
Bild1.png
Zeos hat die Zeile Assert() einfach nicht ausgeführt und damit das dbIntit() nicht.
Abgesehen davon dass es noch ein Tippfehler ist.
dbinit wird nicht der Zeile mit dem Assert aufgerufen. In der Zeile mit dem Assert wird lediglich geprüft, ob dbinit SUCCEED zurückgliefert hat. Für die Auslieferungsversion sparen wir uns den Test. Hat FPC die Zeile mit dem dbinit wegoptimiert? Das kann ich mir nicht vorstellen?
Siehe https://www.freepascal.org/docs-html/rt ... ssert.html
If assertions are not enabled at compile time, this routine does nothing, and no code is generated for the Assert call.
Assert sind im Paket definitiv nicht aktiviert. Ob das jetzt im verschachtelten Includedateien irgendwo aktiviert ist, ist nicht klar.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten