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 6 von 6   « Erste     456   
Benutzerbild von himitsu
himitsu

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

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

  Alt 17. Sep 2022, 01:31
Weil es eben nicht DIE Lösung gibt.

Wie gesagt, entweder man kann was Allgemeines nehmen, dann ist alles fast schon fertig (DCOM/COM)
oder du mußt eben alles selber machen (dir die WrapperEXE bauen und das Interface in dein Programm).

Und wie die beiden dann miteinander Reden, da gibt es auch massenhaft Lösungen ... nennt sich allgemein IPC.
SendMessage (auch WM_COPYDATA oder nicht), MMF, TCP, Pipes oder sonstwas Höheres, so in Richtung Client/Server ala REST, SOAP, DataSnap bzw. RADServer, mORMot uvm.

Man kann die Funktionen im Interface genauso bauen, wie das was die DLL exportiert, und kapselt darin dan was wirklich die Verbindung macht
oder man kann es auch anders machen und das die Verbindung machende direkt verwenden
oder ...
(Ersteres hat den Vorteil, dass es für das nutzenden Programm egal ist, was wie dazwischen passiert, da die Funktionsaufrufe unverändert bleiben, also so als ob die DLL direkt benutzt würde)
$2B or not $2B

Geändert von himitsu (17. Sep 2022 um 01:34 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von TERWI
TERWI

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

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

  Alt 17. Sep 2022, 14:26
Ich hab das hier nun mittels WM_COPYDATA gelöst.
Finde ich zwar irgendwie ein bischen "von hinten durch die Brust ins Auge" ... aber es funktioniert tadellos.

Dazu hab ich einen Variant-Record gebastelt, den ich die Sendmessage hänge.
Je nach Anforderung darin liest oder schreibt der Wrapper in/aus der DLL und gibt den ggf. gefüllten Record gleich wieder zurück.

Praktisch ist, das TWmCopyData den Handle des aufrufenden Prog in Msg.From mitliefert und der Wrapper ohne zu wissen wer da "anfragt" die Antwort gleich wieder zurückschicken kann.

Mit ShellExecute und SW_HIDE gestartet habe ich kein Fenster ... und auch kein Icon in der Taskleiste ?!
Eine Sendmessage mit WM_CLOSE macht den Wrapper bei Programmende wieder zu.
Fühlt sich nun so an, als wenn da gar nichts zwischenhängt.
  Mit Zitat antworten Zitat
Benutzerbild von TERWI
TERWI

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

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

  Alt 17. Sep 2022, 18:12
Eine kleine Klinke ist doch noch da:
Das senden von Daten an die DLL und von da zum 'Gerät' geht so weit ja prima.

Jetzt hätte ich aber z.B. auch gern Daten zurück (vom 'Gerät' gelesen) bzw. das Ergebnis der aufgerufen Funktion....

Die Antwort vom Wapper kommt ja immer in der Message-Routine und das ist (logo ?) eine andere wie die welche Daten anfragt.

Die urspüngliche Funktionalität, der anfragenden Funktione per var einen Paramter zu geben und den nach 'Request' wieder zurückzubekommen ist dahin ...

Hat jemand eine Idee, wie man man das ohne nennenswerte Klimmzüge wieder hinbekommt ?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

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

  Alt 17. Sep 2022, 18:39
Du kannst ein zweiters WM_COPYDATA auch als Antwort zurück an das Fenster des Aufrufers schicken.

oder eben Streams/Pipes, jeweils in die beiden Richtungen
oder man kann MemoryMappedFiles nutzen ... da können Beide lesen und reinschreiben (hin und her)
oder ...
$2B or not $2B
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#55

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

  Alt 17. Sep 2022, 20:19
Manchmal hat man es schwer jemandem helfen zu wollen wenn dieser nicht liest was man schreibt bzw. einfach ignoriert.
Was steht denn hier unter punkt 6.

Hatte angenommen alles ausführlich beschrieben zu haben.
Helfe gern wenn ich es kann aber wenn man so was liest
Zitat:
Finde ich zwar irgendwie ein bischen "von hinten durch die Brust ins Auge"
vergeht einem die Lust daran.

Bin raus!
  Mit Zitat antworten Zitat
Benutzerbild von TERWI
TERWI

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

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

  Alt 17. Sep 2022, 21:57
???
Ich hab das schon gelesen ...
Ist hier auch in etwa das gleiche: Win 10 64 bit, Treiber dito - aber eben eine 'Zubehör-DLL' für erweiterten Zugriff in 32 bit.

Kompilere ich eine 32 bit EXE, kann ich die DLL laden und anwenden. Alles grün.
Als 64 bit kann ich zwar mit LOAD_LIBRARY_AS_DATAFILE laden - hab aber (wie bei MS auch beschrieben) nur Lesezugriff.
Das hilft nur bedingt weiter.

Mit dem 'Spruch' war sinngemäß gemeint, dass man es auch einfacher haben könnte, wenn eben ein kplt. durchgängiger Support in 64 bit vorhanden wäre.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 6 von 6   « Erste     456   

 

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 05:22 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