Benutzer mit den meisten Antworten
Eigene DLL's installieren

Frage
-
Als Übung habe ich eine DLL erstellt zuzüglich einer Anwendung zu deren Nutzung. Liegt die DLL im gleichen Ordner wie die EXE, ist die Ausführung fehlerfrei.
Nun las ich, dass eine Anwendung standardmäßig im gleichen Ordner wie die EXE, im Systemordner (und noch in 1 oder 2 anderen Orten) nach der DLL sucht.
Mein Versuch, die DLL nach System32 auszulagern, schlug fehl mit der Meldung, dass Datei nicht gefunden wurde und daher installiert werden soll.
Wie installiert man eine DLL im Systemordner?
Antworten
-
> Ich würde sagen mal den regsvr32 in der cmd ausführen.
Das braucht man nur, wenn es sich um eine COM-Componente handelt; von dem gehe ich hier aber nicht aus!
I.d.R. reicht das kopieren der DLL in das system32-Verzeichnis.
Vermutlich hat der OP aber ein x64 Problem und hat es somit in das falsche system32 Verzeichnis kopiert... nimm einfach mal syswow64 !
Jochen Kalmbach (MVP VC++)- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 9. November 2011 11:30
Alle Antworten
-
> Ich würde sagen mal den regsvr32 in der cmd ausführen.
Das braucht man nur, wenn es sich um eine COM-Componente handelt; von dem gehe ich hier aber nicht aus!
I.d.R. reicht das kopieren der DLL in das system32-Verzeichnis.
Vermutlich hat der OP aber ein x64 Problem und hat es somit in das falsche system32 Verzeichnis kopiert... nimm einfach mal syswow64 !
Jochen Kalmbach (MVP VC++)- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 9. November 2011 11:30
-
Eigentlich wollte ich den Platzhirsch Jochen fragen, wer ihn genötigt hat, auf meine banale Frage zu antworten. Schließlich führte sein 2. Kommentar jedoch zum Ziel (syswow64). Also Jochen, es sei Dir Deine 1. Wortmeldung verziehen.
Nun, warum will ich die DLL unbedingt im Systemordner haben? Es sollte nur ein Test sein, man weiß nie, ob man dies nicht einmal braucht.
Martin, jetzt stellt sich aber doch noch eine Frage. Jochen schlug ein Installationsprogramm vor. Wozu, wenn die DLL einfach nur reinkopiert werden muß (was auch im Einklang steht mit den Erläuterungen von Microsoft, wonach standardmäßig die DLL auch im Systemordner gesucht wird)? Die Antwort von VC++ klang anfangs sehr überzeugend, so dass ich ihm voreilig einen Punkt gegeben habe. Der Test jedoch führte nicht zum Erfolg: permanent Fehlermeldung, wobei auch die vorgeschlagene Syntax nach meiner Meinung nicht korrekt war.
Einen computerfreien Samstag-Abend wünsch ich Euch, Tom
-
Jochen und ich stellen Software her und Leben von dem, was dies einbringt ;)
Für uns ist es der übliche Weg Installationsprogramme zu bauen und keine Software in irgendwelche Verzeichnisse manuell zu kopieren,was ein "normaler" Benutzer auch gar nicht kann. System32/Syswow64 ist dem "Benutzer" nicht zum Schreiben freigegeben.
Wenn Du Fehlermeldungen bekommst, dannliegt dies gewisslich nicht daran, dass Deine DLL im Systemverzeichnis liegt.
Was für ein vorgeschlagener Syntax.Dein Posting erschließt sich mir nicht...
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de -
Moin, moin
Ich meinte den vorgeschlagenen Aufruf:
regsvr32 "C:\Windows\System32\" "meine.dll"
Dieser führt zur Meldung, dass das Modul nicht gefunden wurde.
Außerdem verlangt regsvr32:
Stattdessen brachte eben einfaches Kopieren der DLL in den Ordner syswow64 den Erfolg.
Ich will doch das Vorgehen, ein größeres Programmsystem per Installationsroutine zu installieren, gar nicht in Frage stellen. Mir ging es doch lediglich darum, verschiedene Vorgehensweisen für mich zu testen.
Gruß Tom
-
Wozu, wenn die DLL einfach nur reinkopiert werden muß (was auch im Einklang steht mit den Erläuterungen von Microsoft, wonach standardmäßig die DLL auch im Systemordner gesucht wird)? Die Antwort von VC++ klang anfangs sehr überzeugend, so dass ich ihm voreilig einen Punkt gegeben habe. Der Test jedoch führte nicht zum Erfolg: permanent Fehlermeldung, wobei auch die vorgeschlagene Syntax nach meiner Meinung nicht korrekt war.
Ich kann Dir nicht ganz folgen...
Die Such-Rehenfolge ist IMHO historisch bedingt.. und das schon seit Win3x...
I.d.R. sollte man nach system32 nur Dateien kopieren, die "geshared" werden sollen. Und dazu braucht man eine Installationprogramm, da nur dieses den "Referenzzähler" korrekt verwaltet...
Jochen Kalmbach (MVP VC++)