LoadLibrary unter Win98 gibt fehler 1157
-
Hallo, ich hatte vor kurzem schon mal zu DLL geposted. Hat auch alles bisher prima geklappt, nur jetzt hat ich festgestellt, dass beim testen unter win98 das loadlibrary nicht funktioniert.
der handle den ich zurückbekomme ist NULL, GetLastError sagt 1157 == DLL nicht gefunden. Das ist aber unmöglich weil der Pfad stimmt. Es ist auch egal ob ich den Pfad relativ oder absolut oder gar nicht angebe. Ohne Pfadangabe sollte unter Win9X systemen normalerweise im systemverzeichnis gesucht werden.
naja, nun hab ich rumgegoogelt und auch diverse postings gefunden, wo leute das gleiche problem hatten (sprich: unter winnt gehts, win9x nicht).
allerdings konnte ich keinen lösungsvorschlag finden.
deswegen wollte ich mal fragen ob das problem jemand kennt und vielleicht nen tipp geben kann. wäre super.net
gruß
-
Eventuell können Abhängigkeiten der Dll unter Deinen 9er Systemen nicht aufgelöst werden. Das 'Dll nicht gefunden' bezieht sich dann nicht auf die zu ladene Dll, sondern auf eine von dieser zusätzliche benötigte externe Dll. Herausfinden kannst Du Du das, indem Du auf einem betroffenen System mal mit dem Dependency Walker in Deine Dll 'hineinschaust'.
-
Hallo,
die Übersetzung von "1157" ist ja:
ERRLOOK.EXE schrieb:
Eine Bibliothekdatei, die zum Ausführen dieser Anwendung erforderlich ist, wurde nicht gefunden.
also: selbst wenn die DLL existiert, kann es sein, daß diese DLL eine Laufzeit-Erfordernis hat (und den Error-Code setzt), die auf dem System nicht vorhanden ist, das können z.B. weitere DLLs sein...mehr kann man ohne nähere Infos, um welche DLL es geht, nicht sagen. Vielleicht solltest du mal den "Dependency Walker" anwerfen, um die Abhängigkeiten dieser DLL auszulesen...
MfG
-
danke für den tipp.
ihr hattet recht. MSVCR71D.DLL braucht er. was mich wundert ist, dass die dll an sich überhaupt keine besonderen includes hat. es ist vielmehr ein grundgerüst einer dll. kann man da vielleicht mit anderen compileroptionen was drehen? die exe lässt sich ja unter win9x auch ohne diese dll ausführen. werd mal recherchieren wozu diese dll gut ist.gruß
-
ok hab schnell mal nachrecherchiert. es liegt an der "laufzeitbibliothek" unter projekteinstellungen. da war multithreaded-dll eingestellt. jenach dem ob man nun multithreaded-debug-dll oder nur multithreded-dll nimmt benötigt er dann msvcr71.dll oder msvcr71d.dll. wenn ich die dll als multithreaded (/MT) compile benötige ich diese zusätzliche dll nicht.
meine frage ist nun, was das zu sagen hat, bzw was diese option "laufzeitbilbiothek" ist/bewirkt. kann ich meine dll als multithreded compilen oder MUSS ich multithreaded-dll nehmen?gruß & besten dank bis dahin
-
schau dir mal das Thema an:
http://www.c-plusplus.net/forum/viewtopic.php?t=71380&highlight=msvcr70d+dll
MfG