dll installieren

Hier kann über allgemeine Themen diskutiert werden, die sonst in kein Forum passen.
Insbesondere über Szene, Games, Kultur, Weltgeschehen, Persönliches, Recht, Hard- und Software.
Antworten
Benutzeravatar
Jonathan
Establishment
Beiträge: 2592
Registriert: 04.08.2004, 20:06
Kontaktdaten:

dll installieren

Beitrag von Jonathan »

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?
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Benutzeravatar
Krishty
Establishment
Beiträge: 8336
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: dll installieren

Beitrag von Krishty »

Jonathan hat geschrieben:Was soll dieses alberne registrieren überhaupt
Alberne DLL Hell verhindern und alberne DLL Injection-Attacken erschweren
Jonathan 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).
Eine Kopie der DLL ins Side-by-Side-Verzeichnis (Windows\WinSxS) kopieren, um zentrale Versionsverwaltung zwecks Obigem zu ermöglichen
Jonathan hat geschrieben:Und warum hat eigentlich mein 64bit Windows ein system32 Verzeichnis aber kein system64?
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 :)

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
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
dot
Establishment
Beiträge: 1746
Registriert: 06.03.2004, 18:10
Echter Name: Michael Kenzel
Kontaktdaten:

Re: dll installieren

Beitrag von dot »

Jonathan hat geschrieben:Nun, früher hat man die dll's in windows/system32 gepackt und alles war gut.
Nur weils funktioniert heißt das noch lange nicht dass es gut ist. Der Ordner heißt nicht umsonst system32...
Jonathan hat geschrieben:Jetzt meine Frage: Wie kriege ich es am einfachsten hin, dass die dlls wirklich gemeinsam genutzt werden können?
http://msdn.microsoft.com/en-us/library/ff951639.aspx
Jonathan hat geschrieben:Und warum hat eigentlich mein 64bit Windows ein system32 Verzeichnis aber kein system64?
Genau was Krishty gesagt hat.
Benutzeravatar
Jonathan
Establishment
Beiträge: 2592
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: dll installieren

Beitrag von Jonathan »

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 :(
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Helmut
Establishment
Beiträge: 237
Registriert: 11.07.2002, 15:49
Wohnort: Bonn
Kontaktdaten:

Re: dll installieren

Beitrag von Helmut »

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.
Benutzeravatar
Krishty
Establishment
Beiträge: 8336
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: dll installieren

Beitrag von Krishty »

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.
Ichh bin nicht Raymond CHen but ist das nicht GENAU der Grund, wofür es SxS-Registrierunmg gibt?
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Helmut
Establishment
Beiträge: 237
Registriert: 11.07.2002, 15:49
Wohnort: Bonn
Kontaktdaten:

Re: dll installieren

Beitrag von Helmut »

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...
Benutzeravatar
Jonathan
Establishment
Beiträge: 2592
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: dll installieren

Beitrag von Jonathan »

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.
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Antworten