Visual Studio 2012 Express - Kompilieren - Problem



  • Beltek schrieb:

    dot schrieb:

    Die Leute müssen die entsprechende Visual C++ Redistributable auf ihrem Rechner installiert haben.

    Ja, das wäre eine Möglichkeit. Nur ist sie nicht sonderlich "gut" 😃

    Doch, genau das ist die "gute" Lösung für dein Problem...

    Beltek schrieb:

    Es geht ja darum, dass andere Leute eine .exe ausführen, wie jede andere auch.

    Können sie ja auch, sobald sie die Redistributable installiert haben.

    Beltek schrieb:

    Deswegen ist ja meine Frage, ob jemand weiß wie man das behebt.

    Indem man die Redistributable installiert...



  • Lange Antwort:
    Mit MSVC kompilierte Programme haben selbst Standard-Funktionen nicht gelinkt, diese laden sie dynamisch aus den Bibliotheken des Compilers, welche sichtbar durch das Betriebssystem abgelegt sind.
    Mit deinem Entwicklungsprogramm hast du sie installiert, verteilst du allerdings deine Erzeugnisse, müssen die Empfänger ebenfalls diese Bibliotheken haben. Diese brauchen nicht gleich MSVC installieren, sondern nur die nötigen "Redistributable" (dt. "Neuverteilung").



  • Okay?
    Warum habe dann ICH das Problem auf meinem Rechner, obwohl ich dort immer alles installiert + alles up-to-date habe?

    Und es wäre mir echt neu, wenn User, etwas nachinstallieren müssten, um ein simples cmd-Programm zu benutzen. Ich bin zwar erst seit ein paar Tagen bei C++, aber das klingt echt merkwürdig..

    Also ums kurz zu machen, es gibt keinen Weg, das Programm "einfach" zu kompilieren, damit man's benutzen kann??



  • Klar, einfach unter Projekteinstellungen C/C++ -> Code Generation von /MD auf /MT (für Release).



  • cooky451 schrieb:

    Klar, einfach unter Projekteinstellungen C/C++ -> Code Generation von /MD auf /MT (für Release).

    Hier Leutz, ich glaub ich bin zu müd' 😃

    Ich hab mir grade 'n paar Infos über diese Redistributable durchgelesen.
    => ICH muss das bei meinem PC installieren, damit sozusagen das Programm kompilieren, damit ANDERE Leute es einfach so nutzen können?!

    Das würde dann (für mich :D) auch Sinn machen..

    Liege ich so richtig? So Ungefähr?



  • Beltek schrieb:

    Warum habe dann ICH das Problem auf meinem Rechner, obwohl ich dort immer alles installiert + alles up-to-date habe?

    Was genau hast du für ein Problem auf deinem Rechner?

    Beltek schrieb:

    Und es wäre mir echt neu, wenn User, etwas nachinstallieren müssten, um ein simples cmd-Programm zu benutzen. Ich bin zwar erst seit ein paar Tagen bei C++, aber das klingt echt merkwürdig..

    Nun, so ist es aber numal eben.

    Beltek schrieb:

    Also ums kurz zu machen, es gibt keinen Weg, das Programm "einfach" zu kompilieren, damit man's benutzen kann??

    Es gibt natürlich Wege, diese sind aber nicht die "guten" Wege. Der "gute" Weg ist, die Redistributable zu installieren. Wenn du keine bestimmten, technischen Gründe hast, etwas anderes zu machen, solltest du auf diesem Weg bleiben. Es ist nicht einfach so aus Spaß die Standardeinstellung...



  • Beltek schrieb:

    Liege ich so richtig? So Ungefähr?

    Nein. Die redist beinhält unter anderem die Funktionen der Standardlib (printf, fread, etc.), jeder der das Programm nutzen will, muss das installieren. Es sei denn du bindest sie direkt in dein Programm ein, wie man das macht habe ich gerade beschrieben.



  • cooky451 schrieb:

    Es sei denn du bindest sie direkt in dein Programm ein, wie man das macht habe ich gerade beschrieben.

    Und dass man das nicht ohne guten Grund machen sollte, hab ich auch schon angemerkt.



  • Ok. Hab's geschafft! 😃
    (Hab dieses "Redistributable" - Ding installiert und dann, so wie "cooky451" es erklärt hatte in den Eigenschaften umgestellt.)

    Aber bevor ich jetzt Danke & Gute Nacht sage. Möchte ich noch kurz was loswerden.

    Ich war echt überrascht über die schnellen Antworten und das sich gleich mehrere mit eingebracht haben. Allerdings, wenn man schon schreibt, dass man neu ist, sollte man einem keine kurzen & knappen Antworten schreiben, sondern lieber das ganze erklären. Was will ein Anfänger mit dem Begriff "Redistributable" anfangen. Ich weiß, Wikipedia und so, aber das ist einfach eine nette Geste.

    Dann könnte man villt noch Links oder genaue Erklärungen etc reinbauen, damit man
    immer 'ne starke Community hat, die auch 'n tolles Forum hinter sich hat wenns Probleme gibt. 😉

    Das ist alles nicht böse gemeint, aber villt kann man es dann beim nächsten Mal etwas besser angehen.

    Ich danke euch für die Hilfe und wünsche allen noch eine gute Nacht 🙂



  • Beltek schrieb:

    Ok. Hab's geschafft! 😃
    (Hab dieses "Redistributable" - Ding installiert und dann, so wie "cooky451" es erklärt hatte in den Eigenschaften umgestellt.)

    Da hast du dann wieder was falsch verstanden. Die von cooky451 genannten Eigenschaften sind genau die Einstellungen, die du machen musst, damit deine exe ohne Redistributable funktioniert. Diese Einstellungen sagen dem Compiler, dass die Runtime Libraries nicht als separate dlls geladen, sondern statisch gelinked, also direkt in deine exe eingebaut werden soll, wodurch keine externen Runtime dlls mehr benötigt werden. Der Nachteil der Sache ist, dass dein Programm z.B. nicht von Sicherheitsupdates und Bugfixes der Runtime profitieren kann. Außerdem wird die exe natürlich entsprechend größer und kann sich die Runtime dlls nichtmehr mit anderen Anwendungen teilen. Jedes so kompilierte Programm bedeutet eine unnötige Kopie der Runtime Libraries auf dem PC. Und genau darum ist das nicht die Standardeinstellung...



  • Maybe your computer is hacked! lol


Anmelden zum Antworten