Release exe verlangt plötzlich debug-DLL
-
Hallo zusammen,
seit Langem arbeite ich mit einem C++ Projekt unter Visual Studio 2005, unter Win 10.
Nun will ich die exe auf einem anderen Rechner testen.
Doch jetzt fehlen plötzlich "urctbased.dll" und "VCRUNTIME140D.DLL".
Das sind aber Debug-Versionen.
In meinen Projekteinstellungen habe ich aber keinen Debug-Schalter gesetzt.
Auch habe ich mich vergewissert (mehrmals), dass ich die "Release-exe" genommen habe.
In meinem zugehörigen Setup-Projekt habe ich die Dependencies aktualisiert.
Hier wurden keine Debug-DLLs gefunden.An was kann das liegen?
Vielem Dank für Eure Hilfe
-
@elmut19 sagte in Release exe verlangt plötzlich debug-DLL:
Visual Studio 2005
Echt oder Tippfehler? VCRUNTIME140D.DLL spricht für VS2015.
-
@manni66
Nein. Kein Tippfehler.Aber ich muss noch dazu sagen, dass ich eigentlich unter VS2019 entwickle und meine Änderungen immer in mein VS2005-Projekt kopiere.
Dieses erstelle ich aber unter meiner VMware WinXP, da dort das VS2005 noch reibungslos funktioniert und das neuste Redistributable hat.
Und unter diesem XP startet die exe auch.
Aber da sind ja auch die Debug DLLs drauf. Aber nicht die Version 140.
Ausserdem denke ich, dass automatisch die neusten DLLs verwendet werden, wenn die älteren nicht gefunden werden.
Es gibt jeden falls irgend eine Logik für die DLL-Auswahl im System.Auch habe ich die Variante probiert: VS2005 unter Win10.
Es war dasselbe Resultat.
-
VCRUNTIME140D.DLL gehört zu VS2015. Vermutung: die bindest eine mit VS2015 gebaute Lib dazu, die aber eine Debugversion ist.
Schau dir mit dem DependecyWalker an, wer die Dlls laden will.
-
@manni66
Vielen Dank manni66 für die Info zum DependencyWalker.
Habs installiert und mal ausgeführt.Leider findet das Ding ca. 3750 eingebundenen DLLs, von denen aber 3730 nicht gefunden werden (auf meinem Rechner).
Und dort läuft diese exe aber.
Habe die 64Bit Variante installiert, da es ja Win10 ist.Vermutlich kann ich mit dem Ding (noch) nicht umgehen.
... Also im Hauptzweig des DependencyWalker sind diese DLLs zumindest nicht aufgeführt.
Da ich mehrere Release-Versionen habe, habe ich nun mal ein älteres Release erstellt.
Dieses funktioniert, auch wenn ich es neu erstelle.
Ich habe aber an den Projekt-Einstellungen seither nichts verändert.
Alles was ich tue, ist, dass ich ergänzten Quellcode in mein altes VS2005-Projekt reinkopiere und das dann neu erstelle.
-
Du solltest den "Dependency Walker" auf dem anderen Rechner ausführen.
In der "Module"-Liste suchst du dann die Debug-DLL raus und per Kontextmenü "Highlight Matching Module in Tree" (CTRL+M) kannst du dann in der Baumansicht zu der (ersten) DLL springen, welche diese Debug-DLL benötigt (es gibt dann auch noch weitere Kontextmenü-Punkt in der Baumansicht zum Zurück-/Vorspringen (falls mehrere DLLs diese Debug-DLL benötigen).Die Fehler bzgl. "delay-load" DLLs und Warnungen (gelbes Icon) kannst du ignorieren (sind größenteils Wrapper-DLLs für .NET Assemblies).
-
Dependency-Walker funktioniert leider auf aktuellen Systemen nicht mehr brauchbar. Auf XP geht er aber wunderbar noch. Du könntest eine "nackte" XP VM verwenden und es dort mit Dependency-Walker probieren.
Ansonsten kannst du das neuere "Dependencies" verwenden: https://lucasg.github.io/Dependencies/
-
@hustbaer @Th69
Vielen Dank Euch.Ich habe es gefunden.
Das mit dem neuen "Dependencies" war ein guter Tipp.
Über den findet man die Abhängigkeiten ausserdem auch besser.Es lag an einer DLL, die ich eigentlich auf dem Zielsystem schon seit ein paar Monaten drauf hatte.
Nur der, der testen sollte, hatte die neue Software, die die DLL benötigt, wohl noch nie gestartet.
Tja, das sind wirklich schon ein paar Monate....Aber vielen Dank für die Tipps. Die haben schliesslich geholfen.
Grüsse
Helmut