Release-Build mit MSVS 2005



  • Hi,

    wahrscheinlich habt ihr diese Frage schon ein paar Mal beantwortet, aber die Suchfunktion liefert mir kein verwertbares Ergebnis.

    Ich hab eine Dll geschrieben von der ich einen Release bauen will. Allerdings widersetzt sich MSVS meinen Bemühungen und baut mir eine Datei, die sogar noch kleiner ist als die Debug-Version.
    Kann mir jemand in aller Kürze erklären, worauf ich bei einem Release-Build achten muss?

    Thx, Maffe



  • Was heißt, er widersetzt sich Deinen Bemühungen? Die Datei ist kleiner als die Debug-Version? Ist doch logisch, sind ja keine Debug-Infos mehr drin. Worin äußert es sich sonst noch, daß es "sich widersetzt".

    Eigenlich muß man nicht mehr machen, als auf Release umzustellen und auf build zu drücken.



  • Ich verstehe Deine Frage überhaupt nicht...
    Ein Release "Baut" man nicht, sondern erstellt man indem man z.B. einfach auf "Build|Bacth build..." "Release" auswählt und "Rebuild" drückt...

    Was ist denn Dein Problem oder was für ein Fehler wird denn angezeigt?

    PS: Natürlich ist i.d.R. ein Release-Build wesentlich kleiner als ein Debug Build! Wundert dich das?



  • Hmm, eigentlich war ich der Meinung, dass der Release größer sein müsste, weil jetzt alle Libs der IDE mit eingebaut werden. Zu mindest war das so beim BCB6. Außerdem dachte ich, dass die Debug-Infos in der ".pdb" stehen. Aber gut ist ja auch nicht so wichtig.

    Fehler bekomme ich nicht zurück. Nur wenn ich versuche die Datei auf einem anderen Rechner auszuführen, dann wird sie nicht erkannt.
    Auf dem Entwicklungsrechner funktionieren beide Versionen.

    (Nur zur Info: Es ist ein Modul für MatLab und heisst eigentlich "*.mexw32", ist aber im Endeffekt ne Dll.)



  • Auf dem Zielsystem sollte das Microsoft Visual C++ 2005 Redistributable Package installiert sein, damit mit VC++ 2005 erstellte Dateien laufen.



  • Alles klar so funktionierts. Allerdings finde ich das nicht so prall, dass man immer dieses Paket mitinstallieren muss.

    Naja, kann man wohl nichts machen.

    Danke. 😃



  • Maffe001 schrieb:

    Alles klar so funktionierts. Allerdings finde ich das nicht so prall, dass man immer dieses Paket mitinstallieren muss.

    Das musst Du auch nicht!
    Es gibt zwei Möglichkeiten dies zu umgehen:
    - Linke statisch gegen die CRT/MFC/ATL (hat sogar den Vorteil, dass es auf NT läuft)
    - Liefere die CRT/MFC/ATL DLLs mit Deiner Applikation aus und auch das passende manifest dazu

    Damit bruachst Du dann auf dem Zielrechner nichts zu installieren!



  • Das hatte ich versucht. ATL, MFC hab ich nicht benutzt. Ich hab nur die C++ STL und die Windows Standard Libs benutzt.
    Wenn ich aber mit dem DependencyWalker nachschaue, dann ist auch noch eine Abhänigkeit auf MSVCR80.dll. Ich denke mal, dass da das Problem lag.

    Allerdings kenne ich mich auch nicht so auf dem Gebiet aus und stelle jetzt nur Vermutungen an.



  • Und was ist jetzt Dein Problem?
    Du musst die folgenden DLLs mitliefern:
    - msvcm80.dll
    - msvcp80.dll
    - msvcr80.dll

    Und eine Datei mit dem Namen "Microsoft.VC80.CRT.manifest" und dem Inhalt:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <!-- Copyright © 1981-2001 Microsoft Corporation -->
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
        <noInheritable/>
        <assemblyIdentity 
            type="win32" 
            name="Microsoft.VC80.CRT" 
            version="8.0.50608.0" 
            processorArchitecture="x86" 
            publicKeyToken="1fc8b3b9a1e18e3b"
        />
        <file name="msvcr80.dll"/>
        <file name="msvcp80.dll"/>
        <file name="msvcm80.dll"/>
    </assembly>
    

    Dann brauchst Du auf dem Zielrechner nix installieren. Du musst nur die obigen 4 Dateien in das gleiche Verzeichnis legen wie Deine EXE!



  • Is ja richtig. Gefallen tut mir das trotzdem nicht. Na mal sehen, wie ich's in Zukunft mache. 😃

    Danke.



  • Was gefällt Dir denn nicht? Oder anders gefragt: Was willst Du denn????

    Link doch statisch, dann hast Du alle Probleme auf einmal gelöst!


Anmelden zum Antworten