LoadLibrary() geht nicht unter Lazarus 64 Bit/Windows?

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

LoadLibrary() geht nicht unter Lazarus 64 Bit/Windows?

Beitrag von MmVisual »

Folgender Code, aus der Zeos Lib soll die SQLite DLL laden. FileExists() zeigt mir, dass die DLL auch existiert, aber LoadLibrary() öffnet die DLL nicht.
Woran kann das liegen?

Code: Alles auswählen

function TZNativeLibraryLoader.ZLoadLibrary(Location: String): Boolean;
Var bFound: Boolean;
begin
   if FLoaded then
      Self.FreeNativeLibrary;
   FLoaded := False;
   Result := False;
 
{$IFDEF UNIX}
  {$IFDEF FPC}
        FHandle := LoadLibrary(PAnsiChar(Location));
  {$ELSE}
        FHandle := HMODULE(dlopen(PAnsiChar(Location), RTLD_GLOBAL));
  {$ENDIF}
{$ELSE}
bFound := False;
If FileExists(Location) Then
  bFound:= true;
        FHandle := LoadLibrary(PChar(Location));
{$ENDIF}
 
   if (FHandle <> INVALID_HANDLE_VALUE) and (FHandle <> 0) then
   begin
      FLoaded := True;
      FCurrentLocation := Location;
      Result := True;
   end;
end;
Mit Lazarus für Win32 klappt das.
Ich habe Win7/64 Bit und wollte gerade das neue Zeos mit Lazarus64 testen.

Grüße Markus
EleLa - Elektronik Lagerverwaltung - www.elela.de

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: LoadLibrary() geht nicht unter Lazarus 64 Bit/Windows?

Beitrag von hde »

MmVisual hat geschrieben:Ich habe Win7/64 Bit und wollte gerade das neue Zeos mit Lazarus64 testen.
Ich muss mir auch kurzfristig Lazharus und Zeos unter Win7/64bit einrichten (vielleicht über Ostern?). Welche Version von Lazarus bzw fpc verwendest du? Es läuft auch unter 32bit nicht mit allen Versionen, Zeos läuft z.B. nicht mit fpc 2.6.1 (nur 2.6.0) nach meinen Tests.

Schöne Ostern
hde

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

Re: LoadLibrary() geht nicht unter Lazarus 64 Bit/Windows?

Beitrag von MmVisual »

Ich habe mir das Snapshot gestern geladen:
Lazarus-1.1-36568-fpc-2.6.0-20120405-win64.exe

Ja, stimmt, mit 2.7.1 hatte ich auch Probleme.

Ich konnte Zeos mit Lazarus 64 nur dann kompilieren als ich das geändert habe, siehe Bild:
Bild1.png
Bild1.png (5.87 KiB) 4194 mal betrachtet
PS: Eigentlich wollte ich das ganze unter KDE/64 machen, aber da gibt es das gleiche Problem, daher versuche ich das erst mal mit Windows/64 in den Griff zu bekommen.

Ich vermute das Problem liegt an FPC/RTL, ich habe mal einen Bugreport geschrieben: http://bugs.freepascal.org/view.php?id=21662" onclick="window.open(this.href);return false;
EleLa - Elektronik Lagerverwaltung - www.elela.de

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

Re: LoadLibrary() geht nicht unter Lazarus 64 Bit/Windows?

Beitrag von MmVisual »

Ich habe gerade den fred gefunden:

http://www.lazarusforum.de/viewtopic.ph ... dll#p25387" onclick="window.open(this.href);return false;

Dann ist wohl klar warum das nicht klappt :(
EleLa - Elektronik Lagerverwaltung - www.elela.de

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: LoadLibrary() geht nicht unter Lazarus 64 Bit/Windows?

Beitrag von hde »

Ich habe jetzt mal Lazarus 1.1 mit FPC 2.6.0 SVN 36583 vom 6.4.2012 mit ZEOS 7.0.1 unter Windows 7 - 64 bit installiert,
bisher ohne Probleme allerdings wie damals schon gesagt alle inc-Files ergänzt um {$DEFINE FPC2_5UP} und die ZComponent.ion zusätzlich um {$DEFINE FPC2_1UP}.

Bei meinem Project hab ich aber noch Probleme mit synapse 3.9. kann also noch nicht wirklich testen

hde

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: LoadLibrary() geht nicht unter Lazarus 64 Bit/Windows?

Beitrag von hde »

Synapse als trunk geladen lässt sich jetzt kompilieren und das angefangene Project auch. Auch Zeos lässt sich kompilieren auch mit dem Project. Der Connect funktioniert wohl auch, aber jedes Select bringt "Out of memory" und das auch bei einem mini Test.
Muss weiter suchen. :mrgreen:
hde

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

Re: LoadLibrary() geht nicht unter Lazarus 64 Bit/Windows?

Beitrag von MmVisual »

hde hat geschrieben:Ich habe jetzt mal Lazarus 1.1 mit FPC 2.6.0 SVN 36583 vom 6.4.2012 mit ZEOS 7.0.1 unter Windows 7 - 64 bit installiert,
bisher ohne Probleme allerdings wie damals schon gesagt alle inc-Files ergänzt um {$DEFINE FPC2_5UP} und die ZComponent.ion zusätzlich um {$DEFINE FPC2_1UP}.

Bei meinem Project hab ich aber noch Probleme mit synapse 3.9. kann also noch nicht wirklich testen

hde

Lazarus 32 Bit oder Lazarus 64 Bit?

Wenn Du Lazarus 64 Bit installiert hast, dann kann man zwar Zeos installieren, aber man kann die SQLITE3.DLL von SQLite.org nicht nutzen, die geht nur wenn man Lazarus 32 Bit nimmt.
EleLa - Elektronik Lagerverwaltung - www.elela.de

Socke
Lazarusforum e. V.
Beiträge: 3182
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: LoadLibrary() geht nicht unter Lazarus 64 Bit/Windows?

Beitrag von Socke »

MmVisual hat geschrieben:Lazarus 32 Bit oder Lazarus 64 Bit?

Wenn Du Lazarus 64 Bit installiert hast, dann kann man zwar Zeos installieren, aber man kann die SQLITE3.DLL von SQLite.org nicht nutzen, die geht nur wenn man Lazarus 32 Bit nimmt.
Es gibt durchaus SQLite3 für 64-Bit Windows vorkompiliert, zum Beispiel, weil ich das mal benötigt habe. Hier gibt es nur keine regelmäßigen Updates.
Wenn man das selber übersetzen möchte, rate ich dazu ein Mini-Linux mit C-Crosscompiler zu installieren und sich von Fehlermeldungen nicht abhalten zu lassen.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: LoadLibrary() geht nicht unter Lazarus 64 Bit/Windows?

Beitrag von hde »

MmVisual hat geschrieben:Lazarus 32 Bit oder Lazarus 64 Bit?
64 bit Version .. versuche es mit mySQL. Connect geht, aber jeder select stürzt mit "out of memory" ab. Beim Debuggen zeigen sich andere Fehler .. ein Versuch mit Zeos 6.6.6 scheiterte bisher auch, schon beim Connect. Z.Zt. etwas frustierend. Da ich mySQL 5.5 bisher einsetze, werd ich dort mal zurückgehn auf 5.1, denn 5.5 können auch die Lazarus-Compnenten nicht. Und auch Lazarus 0.9.31 werd ich mal checken.
hde

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: LoadLibrary() geht nicht unter Lazarus 64 Bit/Windows?

Beitrag von hde »

ergänzend:
Lazarus 0.9.31 fpc 2.6.0 Zeos 7.0.1 (auch 6.6.6) alles 32-bit macht, wie bereits erwähnt (fast) keine Probleme und kommt auch mit mySQL 5.5 zurecht.
hde

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

Re: LoadLibrary() geht nicht unter Lazarus 64 Bit/Windows?

Beitrag von MmVisual »

@Socke
Genau den Thread hatte ich gesucht, ich teste das mal mit Lazarus64 / Win7/64.
EleLa - Elektronik Lagerverwaltung - www.elela.de

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

Re: LoadLibrary() geht nicht unter Lazarus 64 Bit/Windows?

Beitrag von MmVisual »

@Socke
Klappt prima, Lararus 64 Bit, Win7/64 Bit und die DLL läuft mit der Datenbank.

Jetzt brauche ich nur noch eine MySQL DLL für 64 Bit.
EleLa - Elektronik Lagerverwaltung - www.elela.de

Socke
Lazarusforum e. V.
Beiträge: 3182
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: LoadLibrary() geht nicht unter Lazarus 64 Bit/Windows?

Beitrag von Socke »

MmVisual hat geschrieben:Jetzt brauche ich nur noch eine MySQL DLL für 64 Bit.
Die gibts direkt auf der offiziellen Webseite.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: LoadLibrary() geht nicht unter Lazarus 64 Bit/Windows?

Beitrag von hde »

MmVisual hat geschrieben:Klappt prima, Lararus 64 Bit, Win7/64 Bit und die DLL läuft mit der Datenbank.

Jetzt brauche ich nur noch eine MySQL DLL für 64 Bit.
Wäre nett MmVisual wenn du mir sagenkönntest welche Versionen von Lazarus-64, fpc-64 und Zeos bei dir laufen.

Bei mir klappt unter Win7-64 noch nichts.
hde

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

Re: LoadLibrary() geht nicht unter Lazarus 64 Bit/Windows?

Beitrag von MmVisual »

Lazarus, Snapshot Setup:
Lazarus-1.1-36568-fpc-2.6.0-20120405-win64
von hier:
http://freepascal.dfmk.hu/test/lazarus/" onclick="window.open(this.href);return false;
Also fast das aktuellste.

Zeos, aus dem SVN 1082 aus dem Trunk:
https://zeoslib.svn.sourceforge.net/svn ... slib/trunk" onclick="window.open(this.href);return false;

Das Lazarus Setup nach C:\ installiert
Dann unter C:\lazarus\components\ZeosDBO
die beiden Ordner von Zeos packages und src einkopiert und das Package für Lazarus geöffnet, kompiliert und dann installiert.

Anbei ein Testprogrämmchen.
Dateianhänge
TestProj.zip
(127.37 KiB) 189-mal heruntergeladen
EleLa - Elektronik Lagerverwaltung - www.elela.de

Antworten