Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi DLL von 32 auf 64 Bit umstellen (https://www.delphipraxis.net/210433-delphi-dll-von-32-auf-64-bit-umstellen.html)

calibra301 25. Apr 2022 09:25

Delphi DLL von 32 auf 64 Bit umstellen
 
Hallo,

bin mal wieder an meinem "Lieblingsprojekt"...Eine C++ Exe ruft eine C++ DLL auf welche dann mit einer
Delphi DLL spricht. Läuft alles seit Jahr und Tag...als 32 Bit.

Nun wurden die C++ Teile als 64 Bit gebaut und auch die Delphi DLL wurde auf 64 Bit umgestellt.
Leider fliegt mir die 64 Bit Variante schon beim LoadLibrary wo die C++ DLL die Delphi DLL laden will um die Ohren.
(Access Violation,...). Den C++ Teil schliesse ich aus. Klammere ich das LoadLibrary und die benutzten Funktionen aus
geht alles.

Gibts einen "Leitfaden" für eine solche Umstellung ?
Plattform hinzufügen und dann als 64 Bit kompilieren reicht leider nicht :-)

In der DLL sind hauptsächlich mathematische Funktionen aber auch ein Form.
Die ursprüngliche Form wurde mal in Delphi 5 programmiert, nach Umstellung auf XE8 nun Alexandria Prof.

Danke !
Calli

Andreas13 25. Apr 2022 10:01

AW: Delphi DLL von 32 auf 64 Bit umstellen
 
Hallo Calli,
vor einiger Zeit hat Emil (= Venice2) etwas Passendes zu Deiner Frage gepostet: https://www.delphipraxis.net/208861-...mbinieren.html
Leider habe ich die technischen Details wegen der Komplexität seiner Lösung nicht verstanden, aber vielleicht kann jemand hier zur Klärung ein einfache(re)s Beispiel bringen, wie Du von einer 64-Bit-Exe eine 32-Bit-DLL fehlerfrei aufrufen kannst.

Grüße, Andreas

calibra301 25. Apr 2022 10:08

AW: Delphi DLL von 32 auf 64 Bit umstellen
 
Hallo,
wünschenswert wäre es ja die Delphi DLL auch auf 64 Bit zu bauen.
Es liegt ja alles im Quelltext vor und die C++ Sachen sind als 64 Bit gebaut.
Komisch für mich ist ja das es schon beim LoadLibrary auf der C++ Seite knallt.
DLL Export Tools zeigen die Exports korrekt an. Es sind nur 2 weitere dabei die Delphi wohl
"dazu baut".

Debugversuche schlagen fehl. Breakpoints in den exportierten Funktionen werden nicht erreicht.

Andreas13 25. Apr 2022 10:48

AW: Delphi DLL von 32 auf 64 Bit umstellen
 
Hallo,
ich programmiere fast ausschließlich technisch-wissenschaftliche Berechnungen, auch Berechnungs-DLL’S wie Du, aber ausschließlich für die 32-Bit-Plattform.
Daher möchte ich Dich daran erinnern, daß auf der 64-Bit-Plattform der Type Extended, den man für genaue(re) Berechnungen unbedingt braucht, leider nicht mehr gibt: Dort ist
Delphi-Quellcode:
Extended = Double;
Deshalb solltest Du evt. weiterhin über die Benutzung der genaueren 32-Bit-DLL in Deinen 64-Bit-Anwendungen nachdenken.
Gruß, Andreas

calibra301 25. Apr 2022 11:52

AW: Delphi DLL von 32 auf 64 Bit umstellen
 
Hallo Andreas,

das ist schon ausgeschlossen. Es werden nur doubles benutzt.

himitsu 25. Apr 2022 12:20

AW: Delphi DLL von 32 auf 64 Bit umstellen
 
Debugger benutzen und schauen wo es knallt?


Irgendwelche wilden Integer-Pointer-Casts, bzw. Integer-Object-Casts verwendet?

BerndS 25. Apr 2022 12:26

AW: Delphi DLL von 32 auf 64 Bit umstellen
 
Ich würde vorschlagen, eine Projektgruppe zu erstellen, in der ein Delphi 64 bit Anwendung die 64 bit DLL zur Laufzeit läd. Die DLL sollte auch als Projekt in der Projektgruppe enthalten sein, so dass man zwischen beiden umschalten kann.

dummzeuch 25. Apr 2022 12:41

AW: Delphi DLL von 32 auf 64 Bit umstellen
 
Funktioniert denn der Aufruf der 64 Bit Delphi DLL aus einem 64 Bit Delphi-Programm heraus?

Das wäre das erste, was ich testen würde, um evtl. falsche Deklarationen bei den Import-Funktionen auszuschließen bzw. es darauf einzuschränken. Die üblichen Fehler beim Aufruf von DLLs mit verschiedenen Programmiersprachen sind nach meiner Erfahrung:
  • falsche Calling Convention
  • falsches Alignment von Datentypen
  • falsche Datentypen
  • fehlerhafte Speicherverwaltung (z.B. Allozierung von Speicher in der DLL, Freigabe dann im Programm oder umgekehrt)

shebang 25. Apr 2022 12:59

AW: Delphi DLL von 32 auf 64 Bit umstellen
 
Knallt es wirklich beim LoadLibrary selbst oder erst danach und was sagt der Rückgabewert der Funktion?

calibra301 25. Apr 2022 15:01

AW: Delphi DLL von 32 auf 64 Bit umstellen
 
Hallo,

definitiv beim LoadLibraray. Das ist ja das komische.
Die DLL exportiert 3 Funktionen, debugging in der DLL is nicht. Wird nicht erreicht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:37 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz