Blutiger Anfänger sucht Rat! .exe Datei öffnen



  • Hallo,

    ich bin neu hier im Forum und hab auch gleich mal eine Frage.
    Ich habe gestern mit C++ Angefangen und bin schon sowas von begeistert, dass ich schon garnicht mehr genug davon bekomme neue Sachen zu lernen.
    Ich habe ein kleines Programm mit Visual Studio 2010 geschireben. Nun habe ich eine .exe Datei ich bei mir ohne Probleme öffnen kann. Jedoch möchte ich, dass dieses Programm auf einem anderen PC auch funktioniert, wo ich keinen Compiler habe. Wie kriege ich das so hin, dass ich auf dem anderen PC die .exe Datei öffnen kann?

    Danke!



  • Hallo,

    Du brauchst den Compiler nur, um deine Quelltexte in Maschinencode "umzuwandeln".
    Für die Ausführung brauchst du den Compiler nicht. Du kannst deine exe also ohne Probleme auf anderen Computern (ohne Compiler) ausführen.

    MfG, Jochen


  • Administrator

    Jochen S. schrieb:

    Du kannst deine exe also ohne Probleme auf anderen Computern (ohne Compiler) ausführen.

    Guter Witz 🙂

    @KompiPauer,
    Grundsätzlich stimmt es ja schon, was Jochen sagt. Nur musst du leider auch noch die CRT DLL von Visual Studio 2010 mitgeben, sonst gibt es eine Fehlermeldung beim Aufstarten. Dazu gibt es grundsätzlich 3 Lösungen:
    1. Die CRT DLL von VS2010 der Exe direkt im selben Ordner beilegen.
    2. Distributable von VS2010 auf dem Zielrechner installieren. Ich weiss aber nicht, ob das Teil überhaupt schon existiert. Kenne nur das von VS2008 und vorher.
    3. Die CRT statisch linken. Kenne mich allerdings mit VS2010 noch nicht aus, weiss also nicht, wo man dies einstellen kann. Unter VS2008: Projekteingenschaften, dann C/C++, dann Code Generation, dort die Runtime-Library auf MT setzen, bzw. MTd bei der Debugversion, allerdings sollte man die Debugversion nie ausliefern, von daher 😉

    Und noch eine Anmerkung: Das ist nicht wirklich ein Problem mit der Sprache C++, oder? Daher würde ich sagen, bist du im falschen Forum. Kompilerforum ein paar Stockwerke tiefer, wäre vielleicht besser.

    Grüssli



  • Dravere schrieb:

    Guter Witz 🙂

    Ok, ich wusste nicht, dass man noch weitere Dlls braucht (Ist das erst ab VS 2010 so?), ich kann nämlich meine Programme, die ich mit Visual C++ 2005 erstelle, auch ohne irgendwelche zusätzlich mitgelieferten Dlls auf anderen Computern ohne Compiler erstellen.

    MfG, Jochen


  • Administrator

    Jochen S. schrieb:

    Ok, ich wusste nicht, dass man noch weitere Dlls braucht (Ist das erst ab VS 2010 so?), ich kann nämlich meine Programme, die ich mit Visual C++ 2005 erstelle, auch ohne irgendwelche zusätzlich mitgelieferten Dlls auf anderen Computern ohne Compiler erstellen.

    Seit ich weiss, ist das so. Also ganz sicher auch mit 2003, 2005 und 2008. Du kannst es womöglich tun, weil ein anderes Programm bereits das VS2008 Redistributable auf dem Zielcomputer installiert hat. Schau mal auf dem Zielcomputer unter den installierten Programmen nach. Viele Programme brauchen das Ding, daher ist es sehr wahrscheinlich, dass es automatisch durch ein anderes Programm installiert wurde.
    Oder du hast die CRT statisch gelinkt, ist aber nicht per Standard eingestellt.

    Grüssli



  • So ist das also. Da hab ich wieder was dazugelernt 🙂

    MfG, Jochen



  • wow danke für die vielen antworten

    wie gesagt bin absoluter anfänger und verstehe eig nur bahnhof. dass mit der dll datei verstehe ich noch, aber weiter nicht mehr.

    hier mal die fehlermeldung wenn man es mit der dll datei öffnet. jedoch muss ja ein bezug zu den beiden progs geben... wie aber?
    http://yfrog.com/jufehlerjdj



  • Ja, Dravere hatte recht.
    Dein Programm versucht auf dei Dll MSVCR100D.dll zuzugreifen. Du musst die Dll also mit dem Programm mitliefern. Wo die Datei genau ist, weiss ich nicht, sie müsste bei dem Compiler zu finden sein. Die dll muss sich dann in dem gleichen Ordner befinden wie dein Programm oder in einem der Ordner, nach dem standardmäßig nach Dlls gesucht wird. (system32, etc.)

    Wie das mit dem statischen Linken geht weiss ich leider auch nicht.

    MfG, Jochen


  • Administrator

    Endlich habe ich es gefunden:
    Microsoft Visual C++ 2010 Redistributable Package (x86)

    Das musst du auf dem Zielcomputer installieren. Ist der einfachste Weg 😉
    Allerdings musst du dein Programm noch im Release-Modus kompilieren. MSVCR100D.dll ist die Debug-Version der CRT. Irgendwo sollte es eine Combobox geben, wo du dies umstellen kannst. Bisher war die oben in einer Toolbar. Dort steht normalerweise Debug. Einfach auf Release stellen und komplieren und dann die Version aus dem Release-Ordner weitergeben.

    Das verteilen der Debug-DLL ist übrigens untersagt 😉

    Grüssli



  • ich finds echt super, dass ihr euch so mühe gibt. kenn ich in den meisten foren überhaupt nicht so.
    ich werde morgen versuchen euren rat umzusetzen und sage euch dann bescheid wie es gelaufen ist.

    danke erstmal soweit!



  • so,

    ich hatte leider die tage keine zeit gehabt.

    ich habe jetzt die datei runtergeladen und installiert.
    wie gesagt, ich bin ein absoluter anfänger in sachen programmieren usw.
    weiß leider nicht wo der release-modus ist oder was das überhaupt ist 🙄
    "MSVCR100D.dll ist die Debug-Version der CRT. Irgendwo sollte es eine Combobox geben, wo du dies umstellen kannst. Bisher war die oben in einer Toolbar. Dort steht normalerweise Debug. Einfach auf Release stellen und komplieren und dann die Version aus dem Release-Ordner weitergeben."

    das verstehe ich auch nicht ganz ^^

    es wäre also nett, wenn du(jemand) es schritt für schritt für den anfänger schlechthin erklären könnte.



  • KompiPauer schrieb:

    so,

    ich hatte leider die tage keine zeit gehabt.

    ich habe jetzt die datei runtergeladen und installiert.
    wie gesagt, ich bin ein absoluter anfänger in sachen programmieren usw.
    weiß leider nicht wo der release-modus ist oder was das überhaupt ist 🙄
    "MSVCR100D.dll ist die Debug-Version der CRT. Irgendwo sollte es eine Combobox geben, wo du dies umstellen kannst. Bisher war die oben in einer Toolbar. Dort steht normalerweise Debug. Einfach auf Release stellen und komplieren und dann die Version aus dem Release-Ordner weitergeben."

    das verstehe ich auch nicht ganz ^^

    es wäre also nett, wenn du(jemand) es schritt für schritt für den anfänger schlechthin erklären könnte.

    Dein Visual Studio sieht so ähnlich aus, oder?
    http://www.technosamrat.com/wp-content/uploads/2008/11/microsoft-visual-studio-2010-and-the-net-framework-40.png

    Du siehst dort neben dem grünen Pfeil (unter dem Menü-Eintrag Tools) ein Feld, wo Debug steht. Dort wählst du Release aus und lässt das Projekt erneut erstellen. Anschließend müsstest du im Projektordner auch einen Ordner Release haben, wo die exe drinne liegt. Diese Release-Exe sollte überall lauffähig sein, wenn die Runtime installiert wurde (wie von Dravere bereits beschrieben) und von dir scheinbar bereits durchgeführt.



  • KompiPauer schrieb:

    weiß leider nicht wo der release-modus ist oder was das überhaupt ist 🙄

    Grundsätzlich gibt es Debug- und Release-Modus. Der Debug-Modus ist zum Testen des Programms gedacht. Dabei werden zur Laufzeit zusätzliche Tests durchgeführt, die dich vor möglichen Fehlern bewahren, aber Performance kosten (z.B. Bereichsüberprüfungen bei Indices). Außerdem werden zusätzliche Informationen dem Komilat zugefügt, damit man besser debuggen kann (wenn du nicht weißt, was ein Debugger ist, erkundige dich bald, du wirst ihn brauchen^^).
    Im Release-Modus wird auf die Tests und Informationen verzichtet und außerdem der Code besser optimiert. Die so erzeugten Programme sind dafür gedacht, weiter gegeben zu werden, sie sind in der Regel wesentlich schneller als die Debug-Pendante (zum Vergleich: ein Algorithmus brauchte bei mir im Debugmodus ca. 23 Sekunden, im Releasemodus bei selber Eingabe nur etwa eine Sekunde).


Anmelden zum Antworten