Release bei Visual C++ ohne Debug (MSVCR100D.dll) [gelöst]



  • Hallo,

    ich brauche Hilfe bei den Einstellungen meines Projektes.
    Beim Arbeiten mit den beiden Standard-Konfigurationen Debug und Release, bin ich auf ein Problem gestoßen:
    Die Release-Version wird (ohne Änderung) mit Debug-Informationen erstellt?!
    Ich habe dann versucht, unter den Projekteigenschaften das zu ändern - bisher ohne Erfolg.

    Folgende Einstellungen (unter Konfigurationseigenschaften) habe ich versucht:

    [b]Debuggen[/b] 
    Befehl: $(TargetPath) oder <leer> 
    Arbeitsverzeichnis: $(ProjectDir) oder <leer>
    [b]C/C++ - Allgemein[/b]
    Debuginformationsformat: <leer>
    [b]Linker - Debuggen[/b]
    Debuginfo generieren: Nein
    

    Bei den Einstellungen "Debuggen" bin ich mir unsicher, andererseits ist das wohl nicht relevant für mein Problem. Wenn ich es richig verstehe, sind das die Parameter für den Debugger, der mit F5 gestartet wird?

    Nun wird für das Ausführen des erstellten Programms die MSVCR100D.dll benötigt, ich habe erfahren, diese Bibliothek wird fürs Debugging benötigt.
    Wie kann das sein, wenn ich doch keine Debuginformationen erstellen lasse? 😮
    Was muss ich ändern, damit diese Datei nicht benötigt wird?

    Zur Info: Ich benutze Visual C++ 2010 EE

    MfG
    XCoder++



  • Die Version der Runtime Dll hat absolut nichts damit zu tun, ob nun Debuginfos erzeugt werden oder nicht. Debuginfos sind nur Daten, die dem Debugger z.B. sagen welcher Stellen in der fertigen exe Datei zu welchen Stellen im Source gehören, damit der sich auskennt. Standardmäßig werden Debuginfos in eine extra Datei (*.pdb) geschrieben, folgedessen macht es überhaupt nix, dass auch im Release-Build Debuginfos generiert werden. Da die exe im Release-Build allerdings optimiert wird, sind die Debuginfos nicht immer ganz aussagekräftig (inlining, etc.)

    Welche Runtime verwendet wird, kannst du unter C/C++ > Code Generation > Runtime Library einstellen.



  • Vielen Dank, das war schonmal informativ!

    Hat aber das Problem leider noch nicht gelöst.
    Ich habe jetzt folgende Einstellungen probiert:

    Vollständige Laufzeitüberprüfungen: <leer>
    Laufzeitbibliothek: /MT oder /MD
    

    Das Ergebnis bleibt das gleiche: Die besagte DLL wird noch benötigt!



  • Kann es sein, dass deine exe eine dll verwendet, die gegen die Debug Runtime gelinked wurde? Denn wenn du mit /MT kompilierst, dann hängt die exe auf keinen Fall von irgendeiner msvcrt.dll ab.



  • Kann es sein, dass deine exe eine dll verwendet, die gegen die Debug Runtime gelinked wurde?

    Wie finde ich das heraus bzw. wo kann ich das ändern?
    Ich benutze Bibliotheken von Allegro und Irrklang (falls das eine Rolle spielt).


  • Mod

    Deine Libraries muss es auch in einer Debug und einer Release Version geben.
    Du verwendest auch die jheweils korrekte. Oder sind das nur Link-Libs die auf DLLs verweisen.

    Ansonsten /VERBOSE Optionen im Linker einschalten und dann schauen wer die Debug Lib der CRT zieht...



  • Danke, das hat zum Erfolg geführt!

    Ich hatte tatsächlich (aber unbewusst) eine Debug-Library von Allegro benutzt, das habe ich also umgestellt. Die msvcr100d.dll wird nun nicht mehr benötigt, Problem ist also gelöst.


Anmelden zum Antworten