PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : VS2008: release-lib beim debug-build linken


eXistence
2009-10-23, 09:37:12
Hallo,
ich versuche bei einem unserer Projekte gerade auf VS2008 (von VS2003) umzusteigen. Das Projekt kompiliert sowohl im Release- als auch im Debug-Modus problemlos. Die Release-Version lässt sich auch einwandfrei starten.

Wenn ich die Debug-Version einiger Programme starten will, erscheint aber eine Fehlermeldung, dass die msvcr90.dll nicht gefunden wurde. Andere Teil-Projekte in der Solution haben dieses Problem nicht, von daher schließe ich eine fehlerhafte Installation von VS2008 oder der CRT aus.

Dass die release-version dieser dll gesucht wird (der Debug-Build sollte ja theoretisch die msvcr90d.dll verwenden), liegt vermutlich daran dass die problembehafteten Programme eine bestimmte Fremd-Lib dazulinken. Von dieser Lib haben wir keine Debug-Version, deswegen wird wohl die release-CRT angezogen.

Unter VS2003 war das nie ein Problem... was hat sich mit dem VS2008 also geändert? Das Problem dürfte doch garnicht so ungewöhnlich sein...

Irgendwelche Tips wie ich die Debug-Version zum laufen bekomme?

gruß
eXi

ManuelCalavera
2009-10-23, 11:49:15
Die Projektoptionen öffnen, zu finden unter:

C/C++ -> Code Generation -> Runtime Library

eXistence
2009-10-23, 13:05:16
Die Projektoptionen öffnen, zu finden unter:

C/C++ -> Code Generation -> Runtime Library

danke für den Hinweis, funktioniert aber leider nicht (crasht dann mit ner exception in_file.c), da müsste ich wahrscheinlich die CRT bei allen Projekten (viele selbst erzeugte Libs) umstellen und das will ich eigentlich nicht.

Es handelt sich nicht um ein kleines Hobby-Projekt oder so, die Solution umfasst ca. 100 Projekte, insgesamt ca. 500.000 Zeilen code. Sonst hätte ich längst auf ne statisch gelinkte CRT umgestellt, aber das würde einen noch größeren Rattenschwanz nach sich ziehen (insbesondere mit Qt).

Ich hab grad nochmal im VS2003 nachgeguckt, da wird die CRT auch dynamisch gelinkt, sogar in der debug-version... irgendwie muss das doch gehen...

Gauß
2009-10-23, 16:37:13
Da musst du für alle Programmteile die Präprozessordefinition _DEBUG rausnehmen und ausschließlich eine release Laufzeitumgebung nutzen.

Damit gehen einem aber viele nützliche debug-Werkzeuge verloren.
Besser ist es die Bibliothek wofür es keine Symbole gibt auszusondern.

eXistence
2009-10-26, 10:55:22
Ich kann die lib leider nicht aussondern :(

Warum stört sich denn das VS2003 daran nicht?

swr1973
2009-10-29, 11:36:54
Hallo,

ich kann dir nicht viel helfen, aber es kann sein das das mit den Manifesten zusammenhängt (das kann echt manchmal eklig sein. Wir hatten da bei Umstellung von 2003->2008 auch einige Probleme).

Ich würde in der Manifest Datei prüfen gegen welche Versionen der Runtime er linkt. Dann kannst du ja im WinSXS Ordner schauen ob die Version vorhanden ist.

Manchmal hilft auch die Manifest Datei nicht einzubetten (mussten wir bei unseren Debug-Compiles so machen, da es ansonsten auch nicht funktionierte).

Evtl. hilft auch eine Installation der VS2008 Sp1 Redistributable.

Gruß
Sven