Ich programmiere jetzt seit kurzer Zeit in Visual Studio 2017 mit C++. Jetzt möchte ich ein Programm an meine Freunde schicken, die auch Windows 10 haben und sich aber nicht alle Visual Studio 2017 runterladen sollen. Hab jetzt schon n bisschen gegoogelt und hab herausgefunden, dass statische libraries wohl was bringen sollen. Allerdings funktioniert es damit immer noch nicht. Ich möchte jetzt letzendlich, dass meine Freunde ein .exe Datei haben, die sie von mir kriegen, ohne sich etwas anderes runterzuladen. Bin leider totaler Anfänger was programmieren angeht, also möchte ich eigentlich, soweit das möglich ist, nur eine Lösung ohne wenn und aber.
Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
C++ Anwendung für andern Pc
- Ersteller T0814S
- Erstellt am
r34ln00b
Lt. Commander
- Registriert
- Feb. 2006
- Beiträge
- 1.117
Du musst eine lauffähige, ausführbare Datei erstellen:
MSDN - How can I create an .EXE file from a Visual Studio project?
MSDN - How can I create an .EXE file from a Visual Studio project?
Ich hab jetzt Build ausgewählt und da steht auch, dass soweit alles geklappt hat. Jetzt suche ich noch die ausführbare Datei. In dem anderen Forum steht ja "Go to the bin folder under your project folder and look for the EXE." Also soll in dem bin Ordner in dem Projektordner nach der .exe Datei suchen. Allerdings ist da kein bin Ordner und auch in den Unterordnern nicht.
new Account()
Banned
- Registriert
- Mai 2018
- Beiträge
- 7.198
könnt gut sein, dass es im Debug folder ist - geh einfach mal in den Ordner wo die sln Datei ist und gib in die Suche "exe" ein.
new Account()
Banned
- Registriert
- Mai 2018
- Beiträge
- 7.198
Vlt. mal Release statt Debug beim kompilieren auswählen.
new Account()
Banned
- Registriert
- Mai 2018
- Beiträge
- 7.198
R
RalphS
Gast
Was genau verstehst Du unter "es funktioniert damit nicht"? Was genau passiert?
"Normal" würdest Du die EXE-Datei hernehmen, von Microsoft die zu Deiner Visual-Studio-Version und -Konfiguration passende Redistributable Runtime raussuchen (x86 oder x64, je nachdem; wurde ggfs. bei der Installation von VS ins Installationsverzeichnis geschrieben, gibt's aber auch im Netz) und beides zusammen Deinen Freunden in die Hand geben.
Ob das bei Microsoft in statisch/statischer Konfiguration funktioniert (also ohne die Laufzeitkomponenten selber)... müßt ich grad passen; nie probiert. Einfach mal in den Projekteinstellungen alle Linkeinstellungen auf Statisch setzen und gucken, ob das dann geht. Macht aber das Ergebnis ggfs. sehr groß.
"Normal" würdest Du die EXE-Datei hernehmen, von Microsoft die zu Deiner Visual-Studio-Version und -Konfiguration passende Redistributable Runtime raussuchen (x86 oder x64, je nachdem; wurde ggfs. bei der Installation von VS ins Installationsverzeichnis geschrieben, gibt's aber auch im Netz) und beides zusammen Deinen Freunden in die Hand geben.
Ob das bei Microsoft in statisch/statischer Konfiguration funktioniert (also ohne die Laufzeitkomponenten selber)... müßt ich grad passen; nie probiert. Einfach mal in den Projekteinstellungen alle Linkeinstellungen auf Statisch setzen und gucken, ob das dann geht. Macht aber das Ergebnis ggfs. sehr groß.
Danke,
Danke an alle, die hier geantwortet haben oder sich das alles auch nur durchlesen!!!
Davon verstehe ich leider relativ wenig, ist jetzt aber auch relativ egal, weil die .exe Datei auf anderen Computern ausführbar ist, wenn ich auf release umstelle.RalphS schrieb:Was genau verstehst Du unter "es funktioniert damit nicht"? Was genau passiert?
"Normal" würdest Du die EXE-Datei hernehmen, von Microsoft die zu Deiner Visual-Studio-Version und -Konfiguration passende Redistributable Runtime raussuchen (x86 oder x64, je nachdem; wurde ggfs. bei der Installation von VS ins Installationsverzeichnis geschrieben, gibt's aber auch im Netz) und beides zusammen Deinen Freunden in die Hand geben.
Ob das bei Microsoft in statisch/statischer Konfiguration funktioniert... müßt ich grad passen; nie probiert. Einfach mal in den Projekteinstellungen alle Linkeinstellungen auf Statisch setzen und gucken, ob das dann geht. Macht aber das Ergebnis ggfs. sehr groß.
Danke an alle, die hier geantwortet haben oder sich das alles auch nur durchlesen!!!
kuddlmuddl
Commander
- Registriert
- Mai 2010
- Beiträge
- 2.693
Um zu testen, ob das Programm ohne Abhängigkeiten funktioniert solltest du entweder einen zweiten PC haben oder aber hierfür eine VM einrichten. ZB hiermit: https://www.virtualbox.org/wiki/Downloads
Dort kannst du dann ein frisches Windows reininstallieren
Dann solltest du noch automatisieren, dass deine Software nach dem Bauen dort hin kommt (zB über Shared Folder) und dadurch geht das Testen viel einfacher, als wenn du immer von Hand Dateien kopierst.
Der Begriff, mit dem du googlen solltest heißt 'deploy'. So nennt sich das ausliefern. Also zB 'deploy c++ visual studio'
Dort kannst du dann ein frisches Windows reininstallieren
Dann solltest du noch automatisieren, dass deine Software nach dem Bauen dort hin kommt (zB über Shared Folder) und dadurch geht das Testen viel einfacher, als wenn du immer von Hand Dateien kopierst.
Der Begriff, mit dem du googlen solltest heißt 'deploy'. So nennt sich das ausliefern. Also zB 'deploy c++ visual studio'
BlackMark
Lt. Commander
- Registriert
- Juni 2007
- Beiträge
- 1.346
@T0814S Entweder wie @RalphS gesagt hat das entsprechende Redistributable am Zielrechner installieren, oder gleich schon statisch linken: How to Static Link VC Runtime in Visual C++?
Gruß
BlackMark
Gruß
BlackMark
new Account()
Banned
- Registriert
- Mai 2018
- Beiträge
- 7.198
Debug Dependencies?BlackMark schrieb:Entweder wie @RalphS gesagt hat das entsprechende Redistributable am Zielrechner installieren
BlackMark
Lt. Commander
- Registriert
- Juni 2007
- Beiträge
- 1.346
@new Account() für einen Release Build? Du hast @T0814S ja schon gezeigt wie man einen Release Build macht. Dann gibt es auch keine Debug Dependencies.
Gruß
BlackMark
Gruß
BlackMark
#include <string>
#include <iostream>
#include <fstream>
#include "vocabulary.h"
using namespace std;
int main(int argc(), const char * argv[]) {
string path = argv[0];
string item;
int size = path.size();
for (int i = 0; i < size; i++) {
item = path;
if (item == "\\") {
path.insert(i + 1, "\\");
i++;
}
}
size = path.size();
path.erase(size - 20, 20);
cout << "Achtung, Umlaute gibt es nicht. Es heisst dann ae, oe, ue und ss statt einem scharfen s. Ausserdem sind Uebersetzungen, die mehrere Worte enthalten mit einem Unterstrich (_) zu verbinden, z. B. sich_beeilen. Zusaetzliche Angaben wie z. B. m. Akk werden zusammen geschrieben (m.Akk). Werden diese Regeln nicht beachtet, kann es zu Fehlern fuehren. Viel Spass bei LATEIN!!!" << endl;
cout << "Welche Lektion soll ich abfragen?" << endl;
string unit;
cin >> unit;
path.append(unit);
path.append(".txt");
ifstream file(path);
if (file.is_open()) {
file.close();
while (true) {
newVocInterrogate(path);
}
}
else { return 1; }
return 0;
}
#include <iostream>
#include <fstream>
#include <time.h>
#include <string>
#include <vector>
#include <algorithm>
#include "vocabulary.h"
using namespace std;
void newVocInterrogate(string path) {
ifstream file1(path);
srand(time(0));
int randy = rand();
int i = 0;
string trash;
while (!file1.eof()) {
getline(file1, trash);
i++;
}
file1.close();
ifstream file(path);
for (int i1 = 0; i1 < randy % i; i1++) {
getline(file, trash);
}
string input;
string word;
vector<string> forms;
vector<string> translations;
file >> word;
while (!file.eof()) {
file >> input;
if (input != "y") {
forms.push_back(input);
}
else { break; }
}
while(!file.eof()) {
file >> input;
if (input != "y") {
translations.push_back(input);
}
else { break; }
}
sort(translations.begin(), translations.end(), std::less<std::string>());
string userInput;
cout << "Welche Formen und zusaetzlichen Angaben hat das Wort " << word << "?" << endl;
vector<string> formSol;
while (formSol.size() < forms.size()) {
cin >> userInput;
formSol.push_back(userInput);
}
if (formSol == forms) {
cout << "Super, die Formen und zusaetzlichen Angaben sind richtig. Jetzt nur noch die Uebersetzungen." << endl;
}
else {
cout << "Das war falsch, richtig ist: ";
for (string item : forms) {
cout << item << " ";
}
cout << endl << "Jetzt aber die Uebersetzungen.";
}
vector<string> translationsSol;
while (translationsSol.size() < translations.size()) {
cin >> userInput;
translationsSol.push_back(userInput);
}
sort(translationsSol.begin(), translationsSol.end(), std::less<std::string>());
if (translationsSol == translations) {
cout << "Super!" << endl;
}
else {
cout << "Das war falsch, richtig ist: ";
for (string item : translations) {
cout << item << " ";
}
cout << endl;
}
file.close();
}
BlackMark
Lt. Commander
- Registriert
- Juni 2007
- Beiträge
- 1.346
@T0814S Habe deinen Code mit Visual Studio 2017 compiliert, statisch gelinked, x64 und release build. VirusTotal hat rein gar nichts auszusetzen. Kann dein Problem nicht reproduzieren.
Gruß
BlackMark
Gruß
BlackMark
Ähnliche Themen
- Antworten
- 1
- Aufrufe
- 947
- Antworten
- 23
- Aufrufe
- 2.847
M
- Antworten
- 18
- Aufrufe
- 3.354
- Antworten
- 20
- Aufrufe
- 2.223
- Antworten
- 7
- Aufrufe
- 3.698