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 3 von 6     123 45     Letzte »    
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.586 Beiträge
 
Delphi 11 Alexandria
 
#21

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

  Alt 29. Mai 2016, 20:20
64 Bit geht erst ab XE2.

Mit dem Process Monitor solltest du aber wie gesagt schnell weiterkommen.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
SearchBot

Registriert seit: 27. Jun 2004
Ort: N-W vom Bodensee
313 Beiträge
 
Delphi 12 Athens
 
#22

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

  Alt 30. Mai 2016, 23:58
Ich hab mir jetzt das Trial von Delphi 10.1 installiert und das Tool mit 64bit compiliert.

Jetzt meint das Ding beim Laden der DLL: "%1 ist keine zulässige win32-Anwendung".
Häää?

-schnauze voll-

Ich hab jetzt ein seriell-auf-USB-Adapter an das Messgerät gesteckt, Treiber für diesen COM-Port-Adapter installiert, mit TComPort-Komponente Verbindung gelegt... - läuft!

Danke für eurer Mitdenken
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.586 Beiträge
 
Delphi 11 Alexandria
 
#23

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

  Alt 31. Mai 2016, 04:08
Jetzt meint das Ding beim Laden der DLL: "%1 ist keine zulässige win32-Anwendung".
Häää?
Was erst Recht dazu passt, dass da falsche DLLs im Pfad gefunden werden, weshalb ich bei sowas eben auch immer mit dem Process Monitor schaue.

Aber wenn es jetzt läuft, ist ja gut.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#24

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

  Alt 7. Sep 2016, 14:31
Eigentlich wollte ich nur antworten um zu erklären, daß man mit MSDN-Library durchsuchenLoadLibraryEx sehr wohl auch eine 32-bittige DLL per Flag MSDN-Library durchsuchenLOAD_LIBRARY_AS_DATAFILE laden kann. Dann hat man allerdings keine (triviale) Möglichkeit Code darin auszuführen, kann aber die exakt gleiche Ressourcen-DLL sowohl für die 32-bit und 64-bit Variante seiner Anwendung benutzen.

Aber dann sah ich so seltsame Behauptungen, denen ich noch entgegentreten will, da sie unwahr und falsch sind. Aber ich sehe auch, daß Zacherl das auch schon vollkommen richtig angesprochen hat. Danke übrigens für den interessanten Link, Zacherl.

Man sollte hier DLLs von Treiber und Interface auseinanderhalten. Die DLLs vom Treiber entsprechen natürlich immer der Architektur des Systems, sind also 32 bittig auf einem x86 und 64 bittig auf einem x64 (bis auf Ausnahmen wie Co-Installer).
Das stimmt so pauschal nicht. Das ist üblich, aber keinesfalls erforderlich. Während der (KM-)Treiber immer der Architektur des Betriebssystemkernels entsprechen muß, kann eine 32-bittige DLL (oder Anwendung oder anderer Code) durchaus auf einen 64-bit (KM-)Treiber zugreifen, wenn WOW64 existiert. Kurzum wenn ein Windows ein 32-bittiges Programm ausführen kann, kann dieses 32-bittige Programm auch mit Treibern schnacken.

Du kannst über eine 32Bit Schnittstelle nicht mit einen 64Bit Treiber kommunizieren.
Wetten daß doch?!

Das Hardwaregerät wird ohne 64Bit Treiber nicht funktionieren.
Genau. Mit der DLL im Usermode hat das aber herzlich wenig zu tun. Wenn du nicht gerade sehr exotische Kommunikationsprotokolle zwischen dem Treiber und dem UM-Code benutzt [1], ist es unproblematisch für WOW64-Code mit einem 64-bittigen Treiber zu schnacken.

Das kann man sich auch ganz einfach veranschaulichen. Aufgrund der Architektur von Windows sind geladene Treiber gleichberechtigt mit dem Kernel. Kann ein 32-bittiges UM-Programm mit dem Kernel kommunizieren? Klar. Also gibt es keinen Grund warum das nicht auch für einen (KM-)Treiber gelten sollte.

Den Treiber gibt es in 64Bit und in "x32onx64".
Das würde dann auf einen UM-Treiber hinweisen. Für bestimmte Geräteklassen sind Treiber auch im Usermode (UM) möglich.

[1] Der Austausch von Zeigern verbietet sich natürlich, ist aber ohne MSDN-Library durchsuchenMDL und das Sperren des Speichers ohnehin nicht sinnvoll machbar. Aber selbst auf die UM-Puffer auf welche die MSDN-Library durchsuchenIRPs bei DeviceIoControl, ReadFile und WriteFile verweisen können, sind von einem 64-bittigen Treiber zugreifbar. Wird aber im Puffer ein Zeiger übertragen wird man sich Probleme einhandeln.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#25

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

  Alt 7. Sep 2016, 15:07
Zitat:
Wetten daß doch?!
JO? Möchte ich schwer bezweifeln und den Beweis dafür antreten.

Ich habe eine 64Bit DLL geschrieben bzw. für ein 64Bit Betriebssystem verfügbar gemacht (Die gab es vorher nur in 32Bit)
Diese integriert sich in den Eigenschaften Dialog von *.mp3 Dateien im System 64Bit.

Wenn das so klappt wie du sagst warum werden dann diese Eigenschaften nicht mehr erkannt wenn ich
versuche eine Datei mit einer 32Bit Anwendung zu öffnen bzw. davon die Eigenschaften anzeigen zu lassen ?

Weder werden die Icons noch die Eigenschaften der Datei im *.mp3 (Eigenschaften Dialog) angezeigt.
Der Grund ist einfach eine Kommunikation findet nicht statt weil ich versuche mit einer 32Bit Anwendung eine 64Bit DLL zu laden.

Siehe Anhang.. Das sagt alles.
Ich habe dir also einen Sichtbaren beweis erbracht das es nicht geht..

Nebenbei! Und ja ich registriere diese Datei selbst mit meiner 32Bit Anwendung so das diese DLL dem System zur verfügung steht.
Sie funktioniert aber nicht mit einer 32Bit Anwendung. Unabhängig davon ob ich sie ansprechen\registrieren kann oder nicht!

Zitat:
Aber dann sah ich so seltsame Behauptungen, denen ich noch entgegentreten will, da sie unwahr und falsch sind.
Nun was ist unwahr und falsch?
Beweise mir das Gegenteil dann reden wir weiter.

Ja ich kann sie laden/registrieren usw.. das ist aber nicht gleichzusetzen das sie auch funktioniert mit einer 32Bit Anwendung.

gruss

Geändert von EWeiss (11. Jul 2019 um 16:44 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#26

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

  Alt 7. Sep 2016, 15:23
Zitat:
Wetten daß doch?!
JO? Möchte ich schwer bezweifeln und den Beweis dafür antreten.
Sehr mutig Assarbad zu widersprechen
Kann zum Thema selbst nicht wirklich was beitragen, aber mich würd interessieren was am Ende rauskommt
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

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

  Alt 7. Sep 2016, 15:26
Diese DLL wird beim Windows Explorer registriert und da der in Windows 64 auch 64 Bit ist, kann er auch nur Eplorer-Plugins laden, welche ebenfalls 64 Bit sind,
bzw. in Windows 32 nur 32 Bit-DLLs.


Das hat aber nichts mit Treibern oder Ressourcen-DLLs zu tun.


Das Einzige, wo sich solche DLLs in der Bittigkeit unterscheiden dürfen ist bei solchen Out-Of-Process COM Servern, wo die DLL nicht im eigenen Prozess geladen wird, sondern in einem externen DLLHost ... da nimmt die COM-Schnittstelle dann die Verbindung/Datenkonvertierung/-übertragung vor.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 7. Sep 2016 um 15:30 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#28

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

  Alt 7. Sep 2016, 15:26
Zitat:
Wetten daß doch?!
JO? Möchte ich schwer bezweifeln und den Beweis dafür antreten.
Sehr mutig Assarbad zu widersprechen
Kann zum Thema selbst nicht wirklich was beitragen, aber mich würd interessieren was am Ende rauskommt
Habe ich kein Problem mit ist auch NUR ein Mensch

Mich auch aber es ist doch ersichtlich Oder?
Das laden einer Library von einer 32Bit Anwendung ist nicht gleichzusetzen mit der Funktion ob diese DLL dann mit 32Bit Anwendung kommunizieren kann.
Das habe ich wohl ausreichend dokumentiert das es NICHT geht.

gruss

Geändert von EWeiss ( 7. Sep 2016 um 15:42 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#29

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

  Alt 7. Sep 2016, 15:30
Falsch.

Diese DLL wird beim Windows Explorer registriert und da der in Windows 64 auch 64 Bit ist, kann er auch nur Plugins laden, welche ebenfalls 64 Bit sind,
bzw. in Windows 32 nur 32 Bit-DLLs.


Das hat aber nichts mit Treibern oder Ressourcen-DLLs zu tun.
Falsch!
Ich registriere sie selbst.. mit meiner 32Bit Anwendung.

Würde ich es nicht tun könntest du den Tab in den Eigenschaften Dialog gar nicht erst sehen.

Ich beziehe mich darauf.
Zitat:
Du kannst über eine 32Bit Schnittstelle nicht mit einen 64Bit Treiber kommunizieren.
Ob es nun ein Treiber oder eine normale 64Bit DLL ist spielt dabei jetzt keine rolle.
Noch deutlicher als mit Bildern kann man es nicht widergeben.
Wenn das jemand nicht sieht braucht er eine Brille.

gruss

Geändert von EWeiss (11. Jul 2019 um 16:44 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.682 Beiträge
 
Delphi 5 Professional
 
#30

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

  Alt 7. Sep 2016, 15:32
Wenn das so klappt wie du sagst warum werden dann diese Eigenschaften nicht mehr erkannt wenn ich
versuche eine Datei mit einer 32Bit Anwendung zu öffnen bzw. davon die Eigenschaften anzeigen zu lassen ?
Ganz einfach: Hier wird kein Interface verwendet sondern eine Shell Extension. Shell Extensions sind DLLs, die logischerweise immer nur von Prozessen der passenden Architektur geladen werden können. Deshalb liefern viele Anwendungen zwei Shell Extensions mit, eine für 32 bit und eine für 64 bit, oft unabhängig von der Architektur der Anwendung selbst.

Grüße
Dalai
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 6     123 45     Letzte »    

 

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 03:04 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