AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi 32bit-DLL mit LoadLibrary auf einem 64bit-System laden?
Thema durchsuchen
Ansicht
Themen-Optionen

32bit-DLL mit LoadLibrary auf einem 64bit-System laden?

Ein Thema von SearchBot · begonnen am 25. Mai 2016 · letzter Beitrag vom 17. Sep 2022
Antwort Antwort
Seite 5 von 6   « Erste     345 6      
Benutzerbild von TERWI
TERWI

Registriert seit: 29. Mär 2008
Ort: D-49626
381 Beiträge
 
Delphi 11 Alexandria
 
#41

AW: 32bit-DLL mit LoadLibrary auf einem 64bit-System laden?

  Alt 16. Sep 2022, 21:46
@TurboMagic
@himitsu

NICHT 64 bit DLLs in 32 bit Programmen
SONDERN 32 bit DLLs in 64 bit Programmen !
Es handelt sich in diesem Fall ausschliesslich um eine Windows-Applikation.

Ich benötige den Zugriff aus meiner 64 Bit App in eine 32-Bit-DLL, weil es diese NICHT in der 64er Version gibt / geben wird.
(Details dazu zum weshalb / warum / wieso ggf. später im Detail ... wenn das wirklich von wichtigem Interesse ist)
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#42

AW: 32bit-DLL mit LoadLibrary auf einem 64bit-System laden?

  Alt 16. Sep 2022, 21:58
Zitat:
SONDERN 32 bit DLLs in 64 bit Programmen !
Kein LoadLibrary verwenden sondern über WM_COPYDATA kommunizieren.

Meine Anwendung ist ebenfalls 64Bit und ich verwende 32Bit Sonique Plugins damit.
Die Kommunikation findet über WM_COPYDATA statt.

Geändert von venice2 (16. Sep 2022 um 22:01 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von TERWI
TERWI

Registriert seit: 29. Mär 2008
Ort: D-49626
381 Beiträge
 
Delphi 11 Alexandria
 
#43

AW: 32bit-DLL mit LoadLibrary auf einem 64bit-System laden?

  Alt 16. Sep 2022, 22:05
ja gut wenn das funzt, aber ...
Ich möchte die 32er DLL unter 64 wie gewohnt laden und anwenden / Funktionen aufrufen.
Wie & wo muss / soll / kann ich da WM_COPYDATA anwenden ?
Habe absolut keinen Plan, wie das geht --- Besipiel(e) wär(en) nicht schlecht

Geändert von TERWI (16. Sep 2022 um 22:08 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#44

AW: 32bit-DLL mit LoadLibrary auf einem 64bit-System laden?

  Alt 16. Sep 2022, 22:59
Es gäbe die Möglichkeit mit einer zwischengeschalteten 32Bit Anwendung auch eine 64Bit Anwendung über IPC WM_COPYDATA 32Bit Dll's anzusprechen.
Exakt so würde ich es auch handhaben, x64.exe spricht über ipc eine x86.exe an, übermittelt auch die dafür benötigten daten, die x86 ruft die funktion wie gewohnt auf und sendet das ergebnis an x64 zurück.
Das funktioniert halt nur bedingt, es kommt halt auf deine dll an und was diese macht.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#45

AW: 32bit-DLL mit LoadLibrary auf einem 64bit-System laden?

  Alt 16. Sep 2022, 22:59
Es ist egal wie rum.
32 in 64 oder 64 in 32

Zitat:
wie gewohnt
das geht nicht

nicht direkt

die DLL wird in ihrem System geladen und ausgeführt (passender DLLHost oder eine Lade-/Schnittstellen-EXE von dir)
und dazwischen kommt irgendeine "Bridge" (fertig/selbsgemacht/sonstwie), w,
also etwas, was die Schnittstelle (DLL-Funktionen) in dem einen System bereitsstellt,
und dann die Aufrufe zur DLL weiterreicht, bzw. Ergebnisse zurückgibt, inkl. kopieren/konvertieren/übertragen von Daten

Bei COM ist es einfach
* diese kann man als In-Process-Server laufen lassen (im Prozess/Speicher der eigenen Anwendung)
* oder als OutOfProcess-Server, also im DLLHost (das kann sogar auf einem anderen Computer sein)
* und das DCOM/COM-Interface stellt zwischen dir und der DLL die Verbindung her, egal wo die ist und passt notfalls sogar die Größe von Typen an (z.B. sowas wie Pointer von/zu 32/64)
$2B or not $2B

Geändert von himitsu (16. Sep 2022 um 23:08 Uhr)
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#46

AW: 32bit-DLL mit LoadLibrary auf einem 64bit-System laden?

  Alt 16. Sep 2022, 23:32
Es gäbe die Möglichkeit mit einer zwischengeschalteten 32Bit Anwendung auch eine 64Bit Anwendung über IPC WM_COPYDATA 32Bit Dll's anzusprechen.
Exakt so würde ich es auch handhaben, x64.exe spricht über ipc eine x86.exe an, übermittelt auch die dafür benötigten daten, die x86 ruft die funktion wie gewohnt auf und sendet das ergebnis an x64 zurück.
Das funktioniert halt nur bedingt, es kommt halt auf deine dll an und was diese macht.
Es macht nur dann Sinn wenn er über den Source der 64Bit Anwendung verfügt.
Hat er diesen nicht dann erübrigt sich das ganze denn er muß daraus ja entsprechende Befehle an die 32Bit exe (Brücke) weiterleiten können.
Zitat:
Ich benötige den Zugriff aus meiner 64 Bit App in eine 32-Bit-DLL, weil es diese NICHT in der 64er Version gibt / geben wird.
In der 32Bit exe (Brücke) kann er dann normal LoadLibrary verwenden.

Geändert von venice2 (16. Sep 2022 um 23:42 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von TERWI
TERWI

Registriert seit: 29. Mär 2008
Ort: D-49626
381 Beiträge
 
Delphi 11 Alexandria
 
#47

AW: 32bit-DLL mit LoadLibrary auf einem 64bit-System laden?

  Alt 16. Sep 2022, 23:41
Zitat:
das geht nicht
...
nicht direkt
Zitat:
Exakt so würde ich es auch handhaben, x64.exe spricht über ipc eine x86.exe an, übermittelt auch die dafür benötigten daten, die x86 ruft die funktion wie gewohnt auf und sendet das ergebnis an x64 zurück.
... ja, prima, schön .. wenn es denn (hoffentlich irgendwie) geht --- wie denn nun ?
"Der Brei scheint heiß ? Wie bekommt man den auf den Teller und genießbar runter ?"

Lasst mich bitte als Hobby-Progger nicht dumm sterben und erklärt das doch mal bitte für Dummies wie mich und andere im Klartext einfach.

Ich will einfach nur aus einer 32er DLL mittels div. vorh. Funktionen ein paar Werte lesen, bzw. mit Parameter-Übergabe Werte setzen.
Mehr (erst mal) nicht.

Ich habe absolut keine Ahnung, wie das in Sachen DCOM / COM / In-Process-Server.
Ein paar sinnvolle Tipps / Links wären sehr hilfreich ,,,,
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#48

AW: 32bit-DLL mit LoadLibrary auf einem 64bit-System laden?

  Alt 17. Sep 2022, 00:07
1. 32Bit exe erstellen.
2. Diese über deine Anwendung 64Bit starten
3. Rückgabe prüfen ob das Handle der Anwendung existiert.

4. 32Bit exe mit der Message WM_COPYDATA ausstatten... Messagen senden. Beispiele wie das geht einfach hier im Forum suchen.
5. Konstante anlegen. Diese muß in der 64Bit und der 32Bit exe gleich sein.

Wenn du jetzt die DLL laden willst Voraussetzung du hast das Handle der 32Bit exe dann schickst du einfach diese Message aus der 64Bit Anwendung.

6. WM_COPYDATA muss in beiden Exe Dateien vorhanden sein.
Zum senden und empfangen.

Geändert von venice2 (17. Sep 2022 um 18:14 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von TERWI
TERWI

Registriert seit: 29. Mär 2008
Ort: D-49626
381 Beiträge
 
Delphi 11 Alexandria
 
#49

AW: 32bit-DLL mit LoadLibrary auf einem 64bit-System laden?

  Alt 17. Sep 2022, 00:56
Wenn ich das nun so weit richtig verstanden habe, dann muss ich:

- 1)
... eine 32er App als "Wrapper" erstellen, welche die 32er DLL lädt und die Funktionen/Daten via Message als WM_COPYDATA bereitstellt / übergibt.
- 2)
den v.g. Wrapper mit "ShellExecute" laden.
- 3)
... und dann Messages / Daten mit dem Wrapper austauschen.

So soll es funtionieren ?
Werde ich zeitnah testen und gebe Info.
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#50

AW: 32bit-DLL mit LoadLibrary auf einem 64bit-System laden?

  Alt 17. Sep 2022, 01:10
So soll es funtionieren ?
Ja!

Geändert von venice2 (17. Sep 2022 um 18:15 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 5 von 6   « Erste     345 6      

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:47 Uhr.
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