Man sollte nicht meinen, dass es so ein Problem wäre, aber irgendwie bekomm ichs nicht hin. Ich hab ein paar Qt Debug dll's und die will ich halt nicht immer mitkopieren. Nun, früher hat man die dll's in windows/system32 gepackt und alles war gut. Windows 7 sieht das scheinbar anders. Die Dateien liegen da, werden aber nicht gefunden. Nach kurzer Suche stieß ich hierauf:
http://lifehacker.com/269063/install-a- ... in-windows
Wenn ich das Programm ausführe kommt ne Fehlermeldung, dass irgendwas nicht kompatibel sein (32 vs 64 bit wie es scheint; es ist ein 64bit Windows). Wenn ich die selben dlls zu der exe kopiere geht allerdings alles super.
Jetzt meine Frage: Wie kriege ich es am einfachsten hin, dass die dlls wirklich gemeinsam genutzt werden können? Was soll dieses alberne registrieren überhaupt, was macht Windows da im Hintergrund (ich mag es nicht, dubiose Anleitungen zu befolgen, ohne zu verstehen, warum ich das was ich mache eigentlich machen muss). Und warum hat eigentlich mein 64bit Windows ein system32 Verzeichnis aber kein system64?
dll installieren
dll installieren
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
https://jonathank.de/games/
- Krishty
- Establishment
- Beiträge: 8336
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: dll installieren
Alberne DLL Hell verhindern und alberne DLL Injection-Attacken erschwerenJonathan hat geschrieben:Was soll dieses alberne registrieren überhaupt
Eine Kopie der DLL ins Side-by-Side-Verzeichnis (Windows\WinSxS) kopieren, um zentrale Versionsverwaltung zwecks Obigem zu ermöglichenJonathan hat geschrieben:was macht Windows da im Hintergrund (ich mag es nicht, dubiose Anleitungen zu befolgen, ohne zu verstehen, warum ich das was ich mache eigentlich machen muss).
Aus demselben Grund, aus dem Windows 7 die Versionsnummer 6.1 hat: Weil grundsätzlich das seine User mit albernen Schikanen malträtierende Windows schuld ist, wenn was nicht funktioniert, und nicht die Idioten, die Variablen wie DLL-Pfade in ihren Programmen statisch definiert haben :)Jonathan hat geschrieben:Und warum hat eigentlich mein 64bit Windows ein system32 Verzeichnis aber kein system64?
Ins Blaue geraten: Wenn du 32-Bit-Text auf einem 64-Bit-Windows-System ausführen möchtest, musst du die WOW64 (Windows on Windows 64-Bit)-Emulationsschicht nutzen und deine DLL nicht ins System32-, sondern ins WOW64-Verzeichnis kopieren und u.U. auch die regsvr32.exe von dort ausführen statt der im System32-Verzeichnis. Ist aber schon ewig her, dass ich 32-Bit-DLLs manuell registrieren musste.
Gruß, Ky
- dot
- Establishment
- Beiträge: 1746
- Registriert: 06.03.2004, 18:10
- Echter Name: Michael Kenzel
- Kontaktdaten:
Re: dll installieren
Nur weils funktioniert heißt das noch lange nicht dass es gut ist. Der Ordner heißt nicht umsonst system32...Jonathan hat geschrieben:Nun, früher hat man die dll's in windows/system32 gepackt und alles war gut.
http://msdn.microsoft.com/en-us/library/ff951639.aspxJonathan hat geschrieben:Jetzt meine Frage: Wie kriege ich es am einfachsten hin, dass die dlls wirklich gemeinsam genutzt werden können?
Genau was Krishty gesagt hat.Jonathan hat geschrieben:Und warum hat eigentlich mein 64bit Windows ein system32 Verzeichnis aber kein system64?
Re: dll installieren
Ok, danke schonmal. (Ich merke schon, man sollte nie über Dinge meckern, die man nicht verstanden hat).
Aber wirklcih weitergekommen bin ich jetzt noch nicht. Ich hab jetzt die RegSvr32 aus SysWOW64 benutzt, aber die sagt mir:
"Das Modul ... wurde geladen, aber der DLLRegisterServer-Eingangspunkt wurde nicht gefunden. Stellen sie sicher ass ... eine gültige .DLL oder .OCX Datei ist, und wiederholen Sie den Vorgang."
Naja, es sind halt nur ein paar selbstkompilierte Qt Debug dlls, die ich bis jetzt in jedes Projektverzeichnis reinkopieren muss. Die ganzen Methoden mit dem dlls installieren scheinen eher von Setup Programmen ausgeführt werden zu sollen und nicht von Hand, jedenfalls klappt es nicht und ich hab eigentlich auch keine Lust, durch rumfummeln an Systemverzeichnissen mir irgendwas kaputt zu machen. Ich meine, es gibt ja Qt Installer und so, aber ich hab halt selbskompilierte Versionen und so. Da steht dann auch immer viel von irgendwelchen Manifestdateien um Versionskonflikte zu umgehen und so, aber ich weiß nicht, ob ich lernen will, wie man die schreibt.
Eigentlich will ich doch nur nicht die selben 5 dll Dateien in jedes kleine Testprojekt kopieren müssen :(
Aber wirklcih weitergekommen bin ich jetzt noch nicht. Ich hab jetzt die RegSvr32 aus SysWOW64 benutzt, aber die sagt mir:
"Das Modul ... wurde geladen, aber der DLLRegisterServer-Eingangspunkt wurde nicht gefunden. Stellen sie sicher ass ... eine gültige .DLL oder .OCX Datei ist, und wiederholen Sie den Vorgang."
Naja, es sind halt nur ein paar selbstkompilierte Qt Debug dlls, die ich bis jetzt in jedes Projektverzeichnis reinkopieren muss. Die ganzen Methoden mit dem dlls installieren scheinen eher von Setup Programmen ausgeführt werden zu sollen und nicht von Hand, jedenfalls klappt es nicht und ich hab eigentlich auch keine Lust, durch rumfummeln an Systemverzeichnissen mir irgendwas kaputt zu machen. Ich meine, es gibt ja Qt Installer und so, aber ich hab halt selbskompilierte Versionen und so. Da steht dann auch immer viel von irgendwelchen Manifestdateien um Versionskonflikte zu umgehen und so, aber ich weiß nicht, ob ich lernen will, wie man die schreibt.
Eigentlich will ich doch nur nicht die selben 5 dll Dateien in jedes kleine Testprojekt kopieren müssen :(
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
https://jonathank.de/games/
Re: dll installieren
RegSvr32 muss man eigentlich nur für COM Objekte in DLLs aufrufen. Für normale DLLs ist das nicht notwendig, die muss man da einfach nur nach system32 reinkopieren.
Allerdings würde ich an deiner Stelle die DLLs doch für jedes Testobjekt neu kopieren. Stell dir vor du kompilierst eine neue Version mit veränderter API, dann wären auf einen Schlag alle anderen Projekte nicht mehr lauffähig. Oder du installierst später mal Windows neu und willst dann schnell ein altes Testprojekt starten. Ist dann nervig, nach der richtigen DLL zu suchen.
Allerdings würde ich an deiner Stelle die DLLs doch für jedes Testobjekt neu kopieren. Stell dir vor du kompilierst eine neue Version mit veränderter API, dann wären auf einen Schlag alle anderen Projekte nicht mehr lauffähig. Oder du installierst später mal Windows neu und willst dann schnell ein altes Testprojekt starten. Ist dann nervig, nach der richtigen DLL zu suchen.
- Krishty
- Establishment
- Beiträge: 8336
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: dll installieren
Ichh bin nicht Raymond CHen but ist das nicht GENAU der Grund, wofür es SxS-Registrierunmg gibt?Helmut hat geschrieben:Allerdings würde ich an deiner Stelle die DLLs doch für jedes Testobjekt neu kopieren. Stell dir vor du kompilierst eine neue Version mit veränderter API, dann wären auf einen Schlag alle anderen Projekte nicht mehr lauffähig.
Re: dll installieren
Zugegebenermaßen weiß ich nicht, was das ist, vermutlich mehrere Versionen mit verschiedenen Dateinamen zu speichern. Kann in bestimmen Fällen wohl nicht anders gehen, zB wenn man beim Anwender eine API für andere Anwendungen instlaliert. Aber zu Kopieren ist hier wohl wesentlich leichter...
Re: dll installieren
Viel bessere Lösung: Man kopiert alle in ein Verzeichnis und setzt die PATH-Umgebungsvariable entsprechend (geht dann ab dem nächsten Anmelden)
http://msdn.microsoft.com/en-us/library ... 80%29.aspx
So weiß man dann auch, welche dlls von einem selber sind und welche zu Windows gehören.
http://msdn.microsoft.com/en-us/library ... 80%29.aspx
So weiß man dann auch, welche dlls von einem selber sind und welche zu Windows gehören.
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
https://jonathank.de/games/