Konsolenanwendung für alle Windowssysteme erstellen



  • Hallo Leute, ich bin neu im Forum und auch neu auf dem Gebiet der Programmierung. Sorry wenn es diese Frage schon mal gab, ich habe sie jedenfalls nicht gefunden...

    Naja, nichts desto Trotz frag ich einfach mal...

    Ich arbeite gerade an einem kleinen Programm zum Englisch lernen, es ist eine Konsolenanwendung, ich schreib das Ding mit Microsoft Visual C++ 2010 Express und ja es soll nur eine kleine Spielerei werden und ist in erster Linie für mich zum üben von C++ gedacht.
    Jetzt kommt die Frage: Wie schaffe ich es aus der Konsolenanwendung ein Programm zu zaubern dass nicht nur auf meinem System (Windows 😎 läuft sondern auch auf Windows XP etc. ? Also ich möchte dass ich es z.B. einfach meinen Freunden auf einem USB Stick geben kann und die es einfach öffnen können

    Liebe Grüße Käffchen187 und Danke schonmal..



    1. #define s passend für Windows XP setzen
      http://msdn.microsoft.com/en-us/library/windows/desktop/aa383745(v=vs.85).aspx

    2. In den Project-Settings einstellen dass die LIB Version der Runtime verwendet werden soll (und nicht die DLL Version). Wichtig: Release Config nicht vergessen.

    3. Passende Toolchain verwenden (k.A. ob die Default Toolchain von MSVC 2010 noch Windows XP unterstützt -- mit Visual Studio 2012 geht es auf jeden Fall).
      (Falls nötig bzw. von deiner Visual Studio Version supported wird das auch in den Project-Settings eingestellt.)

    Damit sollte dein Programm auf Windows Versionen ab XP laufen.

    Wenn du auch noch Windows 2000 oder gar NT 4 unterstützen willst, wird es etwas schwieriger. In dem Fall müsstest du auf einen anderen Compiler umsteigen. Einen älteren MS Compiler, MinGW oder vielleicht nen alten Borland/Watcom/.... (Wobei ich nicht weiss welche Windows Version aktuelle MinGW Versionen voraussetzen - würde mich aber nicht wundern wenn Windows 2000 mit MinGW noch funktioniert.)



  • Sorry, ich versteh nur Bahnhof...
    So gut kenne ich mich mit dem ganzen noch nicht aus dass ich die ganzen Begriffe kenne die du aufgeschrieben hast.. 😞
    Trotzdem Danke dass Du dir die Mühe gemacht hast 🙂



  • Käffchen187 schrieb:

    Sorry, ich versteh nur Bahnhof...
    So gut kenne ich mich mit dem ganzen noch nicht aus dass ich die ganzen Begriffe kenne die du aufgeschrieben hast.. 😞
    Trotzdem Danke dass Du dir die Mühe gemacht hast 🙂

    Was genau versehst du nicht ?

    1. in der stdafx.h eine define Anweisung vor anderen includes einfügen:

    #define  _WIN32_WINNT 0x501
    

    Der Hinweis steht auch in targetver.h

    2. Wenn es nicht zumutbar ist das Redistributable der zugehörigen Visual-Studio
    Version zu installieren bleibt nur die Möglichkeit unter Projekteinstellungen/
    C/C++/Codegenerierung die Laufzeitbibliothek auf eine NICHT-DLL Version umzustellen
    (z.B. Multithreaded (/MT)). Und natürlich Konfiguration auf Release stellen.

    siehe auch:
    http://stackoverflow.com/questions/37398/how-do-i-make-a-fully-statically-linked-exe-with-visual-studio-express-2005

    Für Windowsversionen älter als XP benötigt man ältere VS-Versionen (z.B. VS2005).

    Das hat hustbaer aber auch alles schon angemerkt. Was ist da unklar ?


  • Mod

    Käffchen187 schrieb:

    Jetzt kommt die Frage: Wie schaffe ich es aus der Konsolenanwendung ein Programm zu zaubern dass nicht nur auf meinem System (Windows 😎 läuft sondern auch auf Windows XP etc. ? Also ich möchte dass ich es z.B. einfach meinen Freunden auf einem USB Stick geben kann und die es einfach öffnen können

    Dise Frage ist ca. 1Mio mal in diesem Forum gestellt und beantwortet worden: Das Zauberwort heißt "statisch Linken".

    http://blog.kalmbach-software.de/de/2008/03/05/wie-man-statisch-gegen-die-c-runtime-crt-linkt/



  • Ey Danke Leute, hat jetzt geklappt 😃

    LG Käffchen


Log in to reply