mySQL 5.6 (libmysql.dll kann nicht geladen werden)

Für allgemeine Fragen zur Programmierung, welche nicht! direkt mit Lazarus zu tun haben.
Antworten
jeanP
Beiträge: 21
Registriert: Mo 1. Feb 2016, 07:48

mySQL 5.6 (libmysql.dll kann nicht geladen werden)

Beitrag von jeanP »

Hallo,
bin ganz neu im Forum. Ich hoffe ihr habt ein paar nützliche Tipps.

Ich verwende Win10 (64) und habe den MySQL 5.6 Server installiert (Server version: 10.1.9-MariaDB). Da gab es schon mal Schwierigkeiten wegen der Portverwendung von Win10.
Die Datenbank läuft nun, aber ich bekomme beim connecten der Datenbank einen Fehler, dass die libmysql.dll nicht geladen werden kann. Diese dll habe ich aber aus dem MySQL-Installationsverzeichnis schon herauskopiert und in das System32-Verzeichnis von Windows kopiert.
Ich benutze Lazarus 1.4.4 und der Connector für MySQL 5.6 ist auch enthalten.
Hat jemand eine Idee, was noch getan werden muss, dass die dll erkannt wird? Stehe echt ein bissl auf dem Schlauch jetzt und komme net weiter. War vorher mit Win7 unterwegs, da lief es prima.

Danke im Voraus. :?

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: mySQL 5.6 (libmysql.dll kann nicht geladen werden)

Beitrag von af0815 »

Gib mal die Dll in das Verzeichnis, wo deine Exe vom Programm steht.
Vor allen kontrollier auch mal win32/win64. Wenn du ein Win64 Programm machst, dann brauchst du auch die DLLs in Win64 Version, für Win32 Programm natürlich die Win32 DLLs.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

jeanP
Beiträge: 21
Registriert: Mo 1. Feb 2016, 07:48

Re: mySQL 5.6 (libmysql.dll kann nicht geladen werden)

Beitrag von jeanP »

Hallo, danke für die Antwort.
Die dll habe ich im system32-Verzeichnis des os und auch im Programmverzeichnis meiner exe. Die Fehlermeldung bleibt die Gleiche. Die dll ist aus dem x64-Package des MySQL 5.6.28 Installers.
Ist zum verrückt werden. :cry:

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: mySQL 5.6 (libmysql.dll kann nicht geladen werden)

Beitrag von af0815 »

Und du kompilierst für win64 in Lazarus ?
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

jeanP
Beiträge: 21
Registriert: Mo 1. Feb 2016, 07:48

Re: mySQL 5.6 (libmysql.dll kann nicht geladen werden)

Beitrag von jeanP »

Hallo af0815,

eigentlich nicht. In den Projekteinstellungen ist eingestellt, dass eine Win32-GUI-Anwendung erzeugt wird.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: mySQL 5.6 (libmysql.dll kann nicht geladen werden)

Beitrag von Christian »

Win32 GUI Anwendung entscheidet nur darüber ob GUI oder Kommandozeile, nicht ob 32 oder 64bit.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

jeanP
Beiträge: 21
Registriert: Mo 1. Feb 2016, 07:48

Re: mySQL 5.6 (libmysql.dll kann nicht geladen werden)

Beitrag von jeanP »

Wie kann ich das prüfen? Es sollte schon eine 32-bit Anwendung sein. Kann mann auch beides erzeugen?

marcov
Beiträge: 1100
Registriert: Di 5. Aug 2008, 09:37
OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
CPU-Target: 32/64,PPC(+64), ARM
Wohnort: Eindhoven (Niederlande)

Re: mySQL 5.6 (libmysql.dll kann nicht geladen werden)

Beitrag von marcov »

jeanP hat geschrieben:Wie kann ich das prüfen? Es sollte schon eine 32-bit Anwendung sein. Kann mann auch beides erzeugen?


Mit mitgelieferten Tools: versuche ob FPC's "objdump -D <datei>" eine Assemblerlistung erzeugt. Eine exe Typ Indikator ist als erste Zeile in den Output enthalten.

Mit "objdump -i" kann man sehen welche Formate unterstützt sein. (typisch 32-bit Typen für 32-bit Versionen, und 64-bit für 64-bit Versionen)

jeanP
Beiträge: 21
Registriert: Mo 1. Feb 2016, 07:48

Re: mySQL 5.6 (libmysql.dll kann nicht geladen werden)

Beitrag von jeanP »

Hallo marcov,



Mit mitgelieferten Tools: versuche ob FPC's "objdump -D <datei>" eine Assemblerlistung erzeugt. Eine exe Typ Indikator ist als erste Zeile in den Output enthalten.

Mit "objdump -i" kann man sehen welche Formate unterstützt sein. (typisch 32-bit Typen für 32-bit Versionen, und 64-bit für 64-bit Versionen)


sorry, ab jetzt verstehe ich nur noch Bahnhof.

Thomas B.
Beiträge: 90
Registriert: Fr 2. Nov 2007, 13:32
OS, Lazarus, FPC: Win (L 1.0 FPC 2.6.0)
CPU-Target: 32Bit
Wohnort: Ulm

Re: mySQL 5.6 (libmysql.dll kann nicht geladen werden)

Beitrag von Thomas B. »

Für eine 64Bit dll braucht man auch ein 64Bit Programm, das diese Datei auch laden kann.
Compilereinstellungen --> Konfiguration und Ziele --> Ziel-Betriebssystem (-T) = "Win64" und Ziel-CPU-Familie (-P) = x86_64

jeanP
Beiträge: 21
Registriert: Mo 1. Feb 2016, 07:48

Re: mySQL 5.6 (libmysql.dll kann nicht geladen werden)

Beitrag von jeanP »

Hallo Thomas, danke für die Erklärung.
Bei mir stehen diese auf '(Voreinstellung)'. Welche 'Voreinstellung' ist das dann? Habe das vorher noch nicht berücksichtigt mit Win7 und die Anwendungen sind gelaufen.
Wird dann das Betriebssystem ausgelesen und die entsprechende Einstellung automatisch getroffen?

Muss ich dann jeweils eine *.exe für 32-bit und eine für 64-bit erzeugen oder gibt es auch die Möglichkeit, eine exe zu erstellen, die mit beiden bit-Varianten läuft?

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: mySQL 5.6 (libmysql.dll kann nicht geladen werden)

Beitrag von af0815 »

Normalerweise reicht es das du eine 32Bit Anwendung erzeugst. Dann die entsprechenden 32 Bit Komponenten installieren und es läuft auch auf 64 Bit windows.

Wenn du eine exe mit einem Texteditor öffnest oder Hexviewer, siehst du bei einer Win32
PE L

bei Win64

PE dt

am Anfang stehen. Damit kann man rasch prüfen was man für eine Exe vor sich hat. Mit objectdump aus den fpc Werkzeugen gehts genauso.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

jeanP
Beiträge: 21
Registriert: Mo 1. Feb 2016, 07:48

Re: mySQL 5.6 (libmysql.dll kann nicht geladen werden)

Beitrag von jeanP »

Hallo,

vielen Dank für die hilfreichen Tipps.

Es lag an der bit-Version. Lazarus scheint, wenn keine andere Einstellung getroffen wurde, eine 32-bit Anwendung zu erstellen.
Die libmysql.dll (32-bit) muss (so ist es zumindest bei mir) ins Stammverzeichnis von Lazarus kopiert werden. Ich hatte die dll ins Windows/System32-Verzeichnis kopiert als auch ins Programmverzeichnis meiner Anwendung, dass schaffte keine Abhilfe. Aber im Stammverzeichnis von Lazarus scheint es wohl zu funktionieren.

LG :D

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: mySQL 5.6 (libmysql.dll kann nicht geladen werden)

Beitrag von af0815 »

jeanP hat geschrieben:... Aber im Stammverzeichnis von Lazarus scheint es wohl zu funktionieren. ..

Zur Designzeit ist die im Stammverzeichnis von Lazarus aktiv, zur Laufzeit die im Stammverzeichnis der App. IMHO meine Erfahrung.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

jeanP
Beiträge: 21
Registriert: Mo 1. Feb 2016, 07:48

Re: mySQL 5.6 (libmysql.dll kann nicht geladen werden)

Beitrag von jeanP »

Hallo af0815,

wollte gerade die Korrektur hier eintragen, aber das hast du schon getan.
Genau das habe ich heute festgestellt, als ich eine andere Anwendung mit DB-Anbindung starten wollte (über die *.exe). Habe die libmysql.dll dann in das Programmverzeichnis kopiert und schon ging es.

LG :)

Antworten