C++ Anwendung für andern Pc

T0814S

Newbie
Registriert
März 2019
Beiträge
7
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.
 
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.
 
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.
 
Dann finde ich die .exe Datei, die vorher auch schon da war, mit der es nicht funktioniert.
 
1552230546175.png
 
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ß.
 
Danke,
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ß.
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.

Danke an alle, die hier geantwortet haben oder sich das alles auch nur durchlesen!!!
 
  • Gefällt mir
Reaktionen: pvcf
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'
 
Wie schon gesagt klappt jetzt alles, aber der Windows Defender und andere Anti-Viren Programme erkennen das Programm als Virus. Kann es daran liegen, dass ich auf .txt Dateien zugreife und wie kann ich das fixen?
 
@T0814S Poste deinen Code, dann kann man dir sagen warum dein Programm als Virus klassifiziert wird. Daran, dass du mit *.txt Dateien arbeitest liegt es aber definitiv nicht.

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();
}
 
@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
 
Zurück
Oben