Wie kann ich reines C++, also ohne .NET Framework, in Visual Studio 2019 programmieren?
2 Antworten
Lege ein C++-Projekt an und wirf in dessen Konfiguration alle Bibliotheken außer der MSVCRTxx.dll raus. Lösche auch alle #includes, die der Editor automatisch in deinen Sourcecode einfügt.
Untersuche die erstellte .exe auf Abhängigkeiten (z.B. hiermit). Da siehst du, welche anderen DLLs benötigt werden.
Beim "Ausliefern" deiner .exe musst Du mindestens die passende MSVCRTxx.dll dazulegen. Die findest du (zusammen mit anderen DLLs, die du vielleicht benutzt) irgendwo im Installationsverzeichnis von Visual Studio (in einem Unterordner namens redistrib oder so).
Hier ein Tip von mir: Ich empfehle dazu das WiX Toolset. Damit kann man sein fertig kompiliertes Programm mit allen benötigten DLLs in ein MSI Installationspaket verpacken.
Hier die benötigten Downloads: https://wixtoolset.org/releases/ Sie benötigen einmal die WiX Toolset build tools und die WiX Toolset Visual Studio Extension.
Damit wird das ganze automatisiert und man braucht nicht nach den DLLs selbst zu suchen.
Das ganze ist Freeware.
Klingt plausibel. Das -crt- steht wohl für C-Runtime. Das -d am Ende steht für Debug. Wenn Du im Release-Modus compilierst, wird deine .exe viel kleiner und etwas schneller. Dann brauchst du vermutlich die ucrtbase.dll und VCRUNTIME140.dll.
Ok und wie komme ich in den Release Modus in Visual Studio 2019?
Sorry, keine Ahnung. Irgendwo muss es einen Menüpunkt geben…
ganz einfach ,
halt ein C++ Projekt erzeugen .
dein ernst ?
dann programmiert man C++ code .
so mach ich das , kann ja sein das du ein ganz anderes VisualStudio hast , glaub ich aber kaum .
Ja aber wenn ich mein Programm compiliere und an einem anderen PC ausführe, das weder Visual Studio noch .NET Framework hat, geht es nicht. Meine Frage war wie ich ein C++ Programm in Visual Studio 2019 schreiben kann, das auch auf anderen PCs ohne Visual Studio 2019 und .NET Framework und .NET Core SDK laufen kann...
Wie geht das?
wenn brauchst du maximal noch die VC++ Runtime , wenn du das mit NET compilierst , wird das auch NET brauchen . Wie gesagt, ich hab keine Ahnung was du wie benutzt , aber reine C++ Programme laufen auch ohne alles . Aber wenn Du natürlich die sachen brauchst weil du halt eigentlich Windows Fenster etc nutzt , dann machst du ja auch nicht reines C++ sondern bedienst dich fertiger bibliotheken . Und die brauch es dann auch .
Ok aber wie kann ich jetzt auch ohne VC++ Runtime ein C++ Programm z.b. mit #include <Windows.h> compilieren und an einem anderen PC ohne VC++ Runtime ausführen lassen?
Programme mit #include <Windows.h> sind natürlich an MS Windows gebunden (aber nicht an .NET).
OK, aber wie kann ich jetzt meinen C++ Code mit Visual Studio 2019 compilieren, dass eine anderer PC OHNE .NET Core SDK oder ohne .NET Framework oder ohne VC++ Runtime oder ohne Visual Studio die Datei ausführen kann...
Wie geht das?
Du kannst deinen Code auch in MS Visual Studio ganz normal kompilieren. Darfst halt nur keine Windows-spezifischen Includes nutzen.
Wie kompiliere ich das dann jetzt genau?
Was heißt ganz normal kompilieren?
Was ist mit Windows-spezifischen Includes gemeint?
Meine Aussage muss genauer lauten:
Du kannst deinen Code in MS Visual Studio ganz normal kompilieren. Was resultiert, wird immer an MS Windows gebundener Code sein (aber nicht an .NET gebundener, solange du keine .NET-spezifischen Includes in deinem Programm hast).
Solche, die Funktionalität von .NET beschreiben.
C++ hat existiert lange bevor es .NET gab. Windows kommt auch ohne .NET aus (denn .NET ist ja schließlich nur EINE der vielen möglichen Anwendungen, die auf Windows arbeiten und in C++ implementiert sein können). Insofern unterscheidet .NET sich nicht von Anwendungen, die du selbst für Windows in C++ implementieren möchtest.
Ok aber warum kann ich dann trotzdem die .exe Datei (also die c++ kompilierte Datei)auf meinem anderen PC öffnen?
Wenn deine für MS Windows auf einem PC gebaute EXE auch auf dem anderen PC arbeitet, dann halt deswegen, weil der auch unter MS Windows läuft.
In Klartext: Wenn das Programm, das du schreiben möchtest, .NET nicht aufrufen will, dann benötigen weder du noch Visual Studio entsprechende Includes. Du kannst dann so tun, als gäbe es .NET gar nicht.
Nein was soll ich machen, dass mein Programm auch auf meinem anderen PC läuft?
Du brauchst gar nichts zu machen. Wenns auf einem PC funktioniert, wird es (unterm selben Betriebssystem) auch auf allen anderen funktionieren - auch wenn Visual Studio dort gar nicht installiert ist. Studio ist ja nur zum Bau der EXE notwendig, aber nicht zu ihrem Ablauf.
Vielleicht mal Grundlagen lernen und vor allem nicht erwarten das Copy und Paste und Compile drücken das einzige ist was du kannst . isher sehe ich jedenfalls nicht das Du irgendwie Programmieren kannst .Ergo können wir Dir auch nicht helfen .
Warum das auf deinem Rechner läuft, weil du beim installieren von Visual Studio auch einen ganzen haufen adneren Kram installiert hast .
maxminal wäre das Problem das es eine andere VC++ Version gibt .
Sorry aber etwas zu erklären was Du dir beibringen musst , z.b. was ein Include ist , ist dein Problem . Wir sehen heir ja nicht mal den Code . Und hättest Du dich auch nur 10 minuten mit Programmieren und Compilieren beschäftigt dann wüsstest Du das .
das stimmt so überhaupt nicht, wennich was mit VC 19 compiliere oder mit älteren wie VC 15 dann muss man die "meist nach installieren" ist auch so bei vielen alten spielen .
Er kann sogar nur das debug compiliert haben , dannbräuchte er auf dem anderen auch das debug (weil er nicht wusste das es auch ein release compile gibt) .
Ergo , du hast auch keine Ahnung vom Programmiern und Compilieren .
Hättest Du sie , würdest Du das wissen . Aber erstmal (un)schlaue antworten raushauen . tztztz .
NUR MAL SO ICH PROGRAMMIERE SCHON MEHR ALS 10 MINUTEN!!!
naja , scheint nicht so zu sein , ich seit 20 jahren , und alles was du sagst , sagen leute die gerade das buch aufgeklappt haben aber nicht lesen wollen .
und schreihen hilft gar nicht, ich binnicht deine mudda. mein tip ,mach ein setup und liefere die redistributables dafür .
Nur mal so, dies ist eine Plattform wo man Probleme löst und Fragen BEANTWORTET
lol , du verwechelst hier ein how to do und hilfe plattform und ein service wo du geld bezahlen würdest.
Wir haben dir alle geholfen , aber du willst eine anleitung die dir keiner geben kann .
Denkste auch wir arbeiten für dich oder was willste hier .
du hast mal gar keine rechte . und so helfen dir die meisten sowieso nicht. hier fragt auch keiner wie baue ich ein auto . denn dazu muss man schon grundlagen haben . du willst also gar keine hilfe , du willst nur rumschreien etc .. mach das zu hause aber hier kommste damit kein mm weit.
ganz neues gefühl für dich .
motzen, schreien , ansprüche stellen ... ja ja . mehr kannste nicht .
'
Lol, "du hast mal gar keine rechte", welche Rechte? Haha
Hä was laberst du ich kann viele Sachen....und übrigens ich motze nicht ich Frage nur euch "Experten" etwas und ich bekomme keine Antwort, die ich verwerten kann...
Äh das glaube ich eher weniger, dass das auf allen PCs läuft....
Denk doch mal nach: Ein Programm, das nur auf dem Rechner arbeitet, auf dem es entstand, macht doch gar keinen Sinn. Man könnte es ja selbst dem eigenen Kunden nicht geben. Du hast halt einfach nur einige Videos angesehen und denkst jetzt programmieren zu können. Das ist halt ein großer Irrtum - aber deinerseits.
Hallo ich programmiere gut mit Java aber bin Anfänger in C++...
Wie viele Zeilen Java-Code hast du denn schon geschrieben?
Gib halt mal ne grobe Schätzung (wieviel Seiten Code etwa, rechne mit 50 Zeilen pro Seite).
Naja: Dann kannst du ja auch in Java noch nicht wirklich programmieren, sondern erst mal nur Code schreiben, der compilierbar ist.
Bevor man nicht ein erstes Programm mit nicht ganz trivialer Funktionalität (so ab 50 000 Zeilen Code und verteilt über mehrere Dateien) nicht nur geschrieben, sondern auch ausführlich getestet hat, sollte man nicht behaupten, "gut programmieren" zu können.
Junge das war eine Schätzung es ist sehr wahrscheinlich höher
Ok ich brauche ucrtbased.dll und VCRUNTIME140D.dll für meine .exe kompilierte visual c++ Datei.
Aber trotzdem DANKE!
Viel besser, als alle anderen hier!