libs und mscvr80.dll nicht gefunden
-
wird das mainfest nicht automatisch erzeugt?
-
Smeagol, hast Du das Problem inzwischen gelöst?
An eingebundenen gekauften Libs lag es jedenfalls nicht
Da war ich zu voreilig, nachdem die letzte Header wieder eingebunden, war auch der Fehler wieder da. Ich kann ziemlich genau eingrenzen, wo die falsche DLL geladen wird. Nur ändern kann ich es nicht, da es sich um eine Fremdanwendung eines bekannten Unternehmen handelt, das die eigene Software nicht mehr pflegt.
Tester2
-
nein, ich hab das Problem noch nicht gelöst. Das Zitat war nicht von mir.
Bin nach wie vor, für Lösungsansätze dankbar.Ich weiss acuh nicht, wie ich von Hand ein Manifest erzeugen soll, Vorschlag von Martin Richter, bzw. was soll da drin stehen und wie binde ich das dann ein?
-
Das Zitat war nicht von mir.
Aber von mir.
Das Manifest wird doch automatisch im Projekt erzeugt. Da wird im konkreten Fall in der Debug-Version auf "Microsoft.VC80.DebugCRT" verwiesen. Das ist bereits registiriert und steht im Ordner Windows\WinSxS. Und da stehen für DEBUG definitiv die richtigen DLLs.
In meinem Projekt (aber nur in diesem einen Projekt, das die fremden Header-Files und LIBs eingebunden hat) wird in der Debug-Version aber versucht die MSVCR80D.dll und die MSVCR80.dll zu laden. Was natürlich schief geht. Sobald ich die Includes auskommentiere, ist alles OK.Bin nach wie vor, für Lösungsansätze dankbar.
Ich auch!
Hat denn niemand eine Idee? In der VC 2003-Version war noch alles in Ordnung. Und ich bekomme von dem Fremdanbieter definitiv keine neuen Quellen und kann sie auch nicht neu übersetzen. Ich kann auch diese ganz spezielle Library mit SDK-Funktionen nicht durch eine andere ersetzen.
-
Das Problem ist (wie Du schon erkannt hast), dass die LIB gegen die Release-Version gelinkt wurde und Du aber eine Debug Anwendung erstellst.
Ich persönlich würde den Hersteller der LIB bitten auch eine Debug-LIB zur verfügung stellen. Das spart Dir (und anderen) unnötige Probleme. Auch ist in der aktuellen Konstelation überhaupt nicht sichergestellt, dass Deine Debug-Anwendung überhaupt funktiniert, falls CRT-Speicher/Daten zwischen der LIB und Deiner Anwendung ausgetauscht werden (das ist sozusagen ausgeschlossen, dass dies geht).
Um es zum laufen zu bekommen musst Du in Deinem Manifest noch die Release-CRT aufnehmen:
<dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.50608.0" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity> </dependentAssembly>
-
Jochen, danke für den Tipp. Werde ich nachher gleich probieren.
Ich persönlich würde den Hersteller der LIB bitten auch eine Debug-LIB zur verfügung stellen
Habe ich schon probiert, zumal es sich um ein weltweit agierendes Unternehmen (das nicht mit M anfängt) handelt. Nur wollen die von ihrer eigenen Software nichts mehr wissen.
-
ich würd jetzt gerne mal testen, das noch mit in das manifest aufzunehmen wie Jochen sagt.
Aber jetzt meine wahrscheinlich ganz dumme und peinliche Frage:
Wie erzeuge ich manuell ein Manifest und wo muss das hin? ich hab das
bis jetzt immer automatisch erzeugen lassen.dankö!
-
Warum willst Du es denn von Hand erzeugen?
Du kannst aber z.B. das einbetten verhindern indem Du es in den Projekteinstellungen deaktivierst...Ein Manifest ist einfach eine XML-Datei aus diesem Grunde gibt es da nicht viel zu "Erzeugen"... einfach eine Datei anlegen und reinschriben was Du willst (bzw. was gebraucht wird).
-
Ich will ja erreichen, dass das manifest weiterhin eingebettet wird, nur halt zusätzlich mit den zeilen, die die release-version der libs benötigen.
oder wo soll ich das hinschreiben?
-
Wenn Du alles so eingestellt lässt sollte es doch gehen... was ist denn Dein Problem?
Das Manifest wird dann automatisch mit den richtigen Einträgen erzeugt und eingebettet. Poste doch mal den Inhalt der Datei im Debug/Release Verzeichnis:Namd-der.exe.intermediate.manifest