DLL-Frage
-
Ja und zwar folgendes: ich habe mir ne DLL erstellt. Als Win32-Projekt -> DLL.
Keine MFC-Unterstützung.Das aufrufende Programm ist ein MFC-Projekt mit statischer Linkung.
Auf meinem Rechner läuft auch alles supi(ich nutze LoadLlibry usw. )Soar jetzt ein Rechner, wo kein VS 2005 drauf ist: er lädt die DLL nicht mehr.
Also mein Programm startet(war ja statisch gelinkt), aber wenn ich dann mit nem Button die Funktion auslöse, wo die DLL geladen wird, dann lädt LoadLibrary die DLL nicht mehr.
Habe einen Test gemacht mit einer DLL die nur ne messagebox ausgibt, da wird also auch nix an anderen DLLs nachgezogen, was fehlen könnteWoran liegt das?
-
Du hast eine DLL statisch gelinkt und ladst sie dann mit LoadLibrary? Das macht ja keinen Sinn. Wenn sie statisch gelinkt ist, muss man doch nicht auch noch LoadLibrary aufrufen. Wenn du LoadLibrary verwenden willst, muss du die DLL mitgeben. Oder habe ich aus Müdigkeit was falsch verstanden?
Grüssli
-
omg o_O
der Test-MFC-Dialog, da habe ich die MFC statisch gelinkt.
Meine DLL ist natürlich nicht statisch, widerspricht irgendwie dem Sinn einer DLL statisch zu Linken ...Hat echt keiner ne Idee?
Ich meine das ist ne Win32-DLL, warum lädt der die net auf anderen Rechnern???
-
Welchen GetLastError bekomst Du denn?
Kontrolliere mal welche anderen DLLs Deine DLL benötigt. Das kannst Du mit dem Dependency Walker feststellen. (DEPENDS.EXE)
-
failed with error 9338912
Die Nummern sind manchmal verschieden.
Ich habe als das nicht ging ein Testprojekt gemacht mit einer DLL, die nur eine Funktion hat, welche eine MessageBox ausgibt. Und die zieht keine anderen DLLs nach. Daran liegts nicht, das hab ich alles schon probiert o_O
Daher ist mir das ganze so rätselhaft
-
Pellaeon schrieb:
omg o_O
der Test-MFC-Dialog, da habe ich die MFC statisch gelinkt.
Meine DLL ist natürlich nicht statisch, widerspricht irgendwie dem Sinn einer DLL statisch zu Linken ...Achso, jetzt hab ichs kapiert, sry ^^
Pellaeon schrieb:
Ich habe als das nicht ging ein Testprojekt gemacht mit einer DLL, die nur eine Funktion hat, welche eine MessageBox ausgibt. Und die zieht keine anderen DLLs nach. Daran liegts nicht, das hab ich alles schon probiert o_O
Hmmm ob ich jetzt schon wieder was missverstehe, oder dann war das nicht unbedingt sehr nützlich. Also ich rekapituliere:
Du hast eine NEUE DLL erstellt? Das bringt ja nichts, wenn die ALTE DLL andere DLLs benötigt. Ich empfehle immer noch mal mit http://www.dependencywalker.com/ deine DLL zu untersuchen. Und wenn das nichts bringt, dann die *.exe deiner Anwendung als Profile zu untersuchen, also zur Laufzeit, damit auch die dynamisch gelinkten Libraries entdeckt werden. Das Problem riecht nämlich extrem danach, dass irgendwelche weiteren DLLs fehlen.Grüssli
-
Die Test-DLl war nur dazu da, um halt zu sehen, ob beim eigentlichen Projekt halt DLLs nachgeziogen werde, die ich nicht wusset.
Aber irgendwas zieht das VS 2005 extra noch nach, was es nicht anzeigt. Das ist äußerst dumm, habe grad festfestellt selbst nen Win32-Projekt läuft net einfach auf nem anderen Rechner.
Und das beste ist, die Abhängigkeit steht leider net mit in der Ausgabe in VS ... na mal schauen.Was da noch wer mehr erfahrungen mit, immer her damit.
-
evlt auch die Frage mal andersrum:
was muss ich machen(also welche Compiler/Linker-Einstellungen), sodass auch wirklich nix VS-spezifisches mitgezogen wird?
-
ok also er zieht die msvcr80.dll mit. Wieso das?
Und selbst wenn ich die mit in den Ordner kopiere, geht es trotzdem nicht.Bin so langsam ratlos, was das VS da veranstaltet
-
ok Ursache gefunden, der linkt die CRT dynamisch, und dazu muss dann wohl der gesamte WinSxS-Ordner da sein. In den Compileroptionen statisch die CRT linken und dann funzt es