Programm läuft nur vom Compiler aus

Ich hab mit Visual C++ 6.0 ein Programm entwickelt. Das läuft auch wunderbar, wenn ich es vom Compiler aus starte (also mit Strg+F5). Gehe ich allerdings aus Visual C++ raus und starte die .exe-Datei des kompilierten Programms, stürzt es sofort ab. Das passiert sowohl mit der Release- als auch bei der Debug-Version. Ich hab keine Ahnung, warum es nicht läuft, muss ich vielleicht noch irgendeine lib einbinden?
Wäre wirklich schön, wenn ihr mir helfen könntet.

Hai!

Das sind immer so vielgeliebte Fehler. :smile:

Meistens sind das nicht initialisierte Variablen, da Visual Studio
den Speicher etwas anders verwaltet wie Windows selbst.

Versuche mal shft+F5, wenn das auch abstürzt, dann kannst du mit
OutputDebugString() Ausgaben auf das Ausgabefenster von Visual Studio
machen. Damit kann man sich dann Stück für Stück weiterhangeln
bis man die Stelle findet wo es schief geht.

Viel Erfolg
Stefan

Hallo erstmal.

Ich hab mit Visual C++ 6.0 ein Programm entwickelt.

Betriebssystem ? Autoren Edition ?

Ich hab keine Ahnung, warum es nicht läuft,
muss ich vielleicht noch irgendeine lib einbinden?

I.A. nicht.

Wäre wirklich schön, wenn ihr mir helfen könntet.

Sicher, aber bitte mit Quellcode :wink:

In der Zwischenzeit: kompilierte exe Datei mit dem Explorer ansteuern, Doppelklick. Stürzt es wieder ab ?

HTH
mfg M.L. (Windows2000+SP4 & Visual C++ 6.0 Autoren Edition)

Hallo Fragewurm,

Ich hab mit Visual C++ 6.0 ein Programm entwickelt. Das läuft
auch wunderbar, wenn ich es vom Compiler aus starte (also mit
Strg+F5). Gehe ich allerdings aus Visual C++ raus und starte
die .exe-Datei des kompilierten Programms, stürzt es sofort
ab.

Gibts da auch noch eine Fehlerneldung ???
Und welches Win benutzt du ??
Möglicherweise steht auch noch etwas in der Ereignisanzeige ?

MfG Peter(TOO)

Danke erst mal für die Antworten,

ich hab jetzt ein wenig mit dem Quellcode herumexperimentiert und herausgefunden, dass es bei den Dateioperationen abstürzt aber eben nur, wenn ich das Programm nicht vom Compiler aus starte.
Und zwar stürtzt es schon beim Öffnen einer Datei ab:

file=fopen(„Zuordnung.dat“,„rb“);

file ist auch ordentlich als FILE *file; initialisiert, da kann ja wohl kaum ein Fehler sein?

Ich arbeite mit Windows XP Prof Service Pack 2 und Visual Studio C++ 6.0 (Enterprise Edition)

Hallo nochmal.

ich hab jetzt ein wenig mit dem Quellcode herumexperimentiert
und herausgefunden, dass es bei den Dateioperationen abstürzt
aber eben nur, wenn ich das Programm nicht vom Compiler aus
starte.

Ist die zu öffnende Datei überhaupt im richtigen Verzeichnis ? Also dem Verzeichnis der exe Datei. Als Resource unter VS ist der Pfad zu derselben nämlich definiert…

HTH
mfg M.L.

Hallo Pixeltiger,

Eine Möglichkeit waere IMHO, das Oeffnen der Dateien gründlich abzufragen, falls Error, das in eine Log-Datei schreiben.

Dann siehst Du gleich, welche Fehler er mit der F5 abwirft, und welche beim exe-starten.

lg
Martin B

Vielen Dank für die Hilfe, ich hab den Fehler jetzt gefunden. War wie eigentlich immer was ganz dummes. Hatte einfach nur vergessen die zu ladenden Dateien in das Debug- bzw. Release-Verzeichnis zu kopieren.

Vielen Dank für die Hilfe, ich hab den Fehler jetzt gefunden.
War wie eigentlich immer was ganz dummes. Hatte einfach nur
vergessen die zu ladenden Dateien in das Debug- bzw.
Release-Verzeichnis zu kopieren.

Und warum stürzt das Programm dann ab?
Das ist doch eine ganz normales Problem und sollte mit einer Warnung
quittiert werden aber sicher nicht mit absturz.

Gruß
Stefan

Der Absturz kommt doch wohl nicht durch das fehlgeschlagene
Öffnen der Datei, sondern durch späteren zugriff
auf den Filepointer file, der wohl 0 ist.
So Fehler muss man in C (fopen) selbst abfangen,
oder eine Routine schreiben oder in in MFC suchen,
die daraufhin eine Warnung ausgibt.

FILE *Fopen_Mitwarnung(const char *dateiname, const char* optionen){
FILE *file,*result=0;
file=fopen(dateiname,optionen){
if(0==file){
warnung …, geordneter Programmaustieg oder ignoreiren
} else {
result=file;
}
return result;
}

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]