Autor |
Beitrag |
Bergmann89
      
Beiträge: 1742
Erhaltene Danke: 72
Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
|
Verfasst: Do 17.11.11 15:55
Hey,
ich entwickle zur Zeit mit FPC ein 64bit Projekt. Und da ist mir beim laden einer DLL aufgefallen, das die LoadLibrary bei FPC höchstwarscheinlich falsch definiert sind. Dort wird von der Funktion ein Cardinal zurück gegeben. Ungefähr so: function LoadLibrary(lpFileName: pAnsiChar): Cardinal; stdcall; external Kernel32 'kernel32.dll' 'LoadLibraryA'; Denauso wird bei GetProcAdress ein Cardinal als Handle erwartet. Unter 32bit funktioniert das auch alles wunderbar, aber bei 64bit bekommt man von GetProcAdress nur 0en zurück. Das Handle der DLL sollte eig. ein PInteger sein, dann arbeitet das unter 64bit auch so wie es soll.
Jetzt haben Martok und ich uns gefragt wie denn das bei den Delphi-Versionen aussieht, die 64bit können? Ist das da auch noch ein Cardinal oder wurde da schon auf PInteger umgestellt?
MfG Bergmann.
_________________ Ich weiß nicht viel, lern aber dafür umso schneller^^
|
|
Delphi-Laie
      
Beiträge: 1600
Erhaltene Danke: 232
Delphi 2 - RAD-Studio 10.1 Berlin
|
Verfasst: Do 17.11.11 20:18
Zuletzt bearbeitet von Delphi-Laie am Do 17.11.11 23:07, insgesamt 1-mal bearbeitet
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Do 17.11.11 22:13
|
|
Bergmann89 
      
Beiträge: 1742
Erhaltene Danke: 72
Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
|
Verfasst: Fr 18.11.11 00:54
Ah, OK. Gut zu wissen, dann werd ich wohl morgen mal nen Bugreport an FPC abschicken, aber jetzt geh ich erstma penn^^ gn8
_________________ Ich weiß nicht viel, lern aber dafür umso schneller^^
|
|
Delphi-Laie
      
Beiträge: 1600
Erhaltene Danke: 232
Delphi 2 - RAD-Studio 10.1 Berlin
|
Verfasst: Fr 18.11.11 01:02
Bergmann89 hat folgendes geschrieben : | Ah, OK. Gut zu wissen, dann werd ich wohl morgen mal nen Bugreport an FPC abschicken, aber jetzt geh ich erstma penn^^ gn8 |
Du erkundigtest Dich doch nach 64-Bit-Delphi?!
Also, der Loadlibrary-Aufruf funktioniert bei mir sowohl beim FPC-/Lazarus- als auch beim Delphi-Compilat mit 64 Bit.
|
|
Bergmann89 
      
Beiträge: 1742
Erhaltene Danke: 72
Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
|
Verfasst: Fr 18.11.11 13:04
Les dir mein Post nochma richtig durch. LoadLibrary funktioniert auch unter 64bit. GetProcAdress liefert falsche Werte (bei FPC/Lazarus)!
_________________ Ich weiß nicht viel, lern aber dafür umso schneller^^
|
|
Delphi-Laie
      
Beiträge: 1600
Erhaltene Danke: 232
Delphi 2 - RAD-Studio 10.1 Berlin
|
Verfasst: Fr 18.11.11 14:25
Bergmann89 hat folgendes geschrieben : | GetProcAdress liefert falsche Werte (bei FPC/Lazarus)! |
Im FPC- oder im Delphimodus?
Also, im FPC-Modus scheint es fehlerfrei bei mir zu funktionieren. Extra wegen Deiner nun auch noch mein Windows 7 (64 Bit) hochgefahren...mit geringen Änderungen (dreimal "Pointer" und einmal ein "@" entfernt) kann ich mein Programm "Prozesse" auch im Delphimodus kompilieren, und das Compilat funktioniert genauso wie das mit bzw. in dem FPC-Modus erstellte.
|
|
Bergmann89 
      
Beiträge: 1742
Erhaltene Danke: 72
Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
|
Verfasst: Fr 18.11.11 17:27
Hey,
läuft im Delphi Mode. Ich hab allerdings nur das 2.4.4 Release von FPC. Wenn du die aktuelle Version aus dem Repository hast, dann geht es ohne Probleme, weil der Bug schon gefixt wurde. Hatte ich vorhin im Bugreport nachgelesen.
MfG Bergmann.
_________________ Ich weiß nicht viel, lern aber dafür umso schneller^^
|
|
|