NMAKE: fatal error U1077

lernen.2007

Erfahrenes Mitglied
Hallo Leute,
ich habe wie immer mein Programm gestartet aber bekomme folgende Fehlermeldung:
NMAKE: fatal error U1077 D:\ return code '0x1'
Stop.
NMAKE: fatal error U1077: 'echo' :return code '0x2'
Stop.
Was heisst das? Wie kann ich es lösen?
Danke
 
Hi.

Das heißt das das Programm was in den einfachen Anführungsstrichen hinter U1077: angegeben ist einen Fehler verursacht hat. Das kannst du lösen indem du die Fehler beseitigst. Besser helfen könnte evlt. jemand wenn du mal erzählst was du gemacht hast und vor allem die komplette Ausgabe postest statt nur 3 Zeilen.

Gruß
 
Hallo,

wenn ich eine cpp in DOS-BEFEHLFENSTER so aufrufe: nmake halli.cpp bekomme die folgende Fehlermeldung -->fatal error U1034: syntax error:separator missing

Was ist der Grund dafür?

Danke
 
Tip 1: Google öffnen, "nmake u1034" eintippen und auf suchen klicken.

Tip 2: Versuch doch wenigstens dein Problem zu beschreiben. Dazu wäre es nützlich die komplette Ausgabe von nmake zu sehen und den entsprechenden Teil der Make Datei mit genug Kontext das man evtl. sieht woran es liegt.

Ist die halli.cpp Datei wirklich eine Zieldatei? Solltest du nicht eher sowas angeben wie halli.exe?

Gruß
 
Ich habe einfach eine .cpp Datei mit Name hallo.cpp. Ich will das über MS-DOS ausführen und deshalb gehe in Ordner rein wo hallo.cpp steht und führe mit diesem Befehl aus:
nmake hallo.cpp

Aber bekomme die Folgende error:

fatal error U1034: syntax error : separator missing
Stop.

Hier ist der code:

#include <iostream.h>

void main()
{
cout<<"hallo"<<endl;

return;

}
Wenn ich mit VISUAL STUDIO ausführe ist es kein Problem und ist auch keine Fehler da.
Danke
 
Zuletzt bearbeitet:
Du führst im Visual Studio beim Klicken ja nicht nmake.exe abc.cpp aus, sondern nmake.exe Makefile .
NMake ist ein Makefile-Parser und kein Compiler!

Um Dein Problem also zu lösen, benötigst Du ein Makefile, welches Du unter Visual Studio sogar automatisch generieren kannst.
 
Thomas Kuse hat gesagt.:
Du führst im Visual Studio beim Klicken ja nicht nmake.exe abc.cpp aus, sondern nmake.exe Makefile .
NMake ist ein Makefile-Parser und kein Compiler!

Um Dein Problem also zu lösen, benötigst Du ein Makefile, welches Du unter Visual Studio sogar automatisch generieren kannst.
NMake kennt allerdings wie dessen Pendants auch implizite Regeln (wenn kein Makefile gefunden wird bzw. keins mit /F angegeben ist). Allerdings muß man bei jedem Make normalerweise die Zieldatei angeben und nicht die Quelldatei (die ja normal implizit nicht generiert werden kann).

Versuch's mal mit
Code:
nmake hallo.exe

Gruß
 
Wenn ich so mache bekomme ich folgende Fehlermeldung:

Die Anwendung konnte nicht gestartet werden ,weil mspdb60.dll nicht gefunden wurde. Was auch noch komisch ist, der findet auch windows.h oder auch wie stdio.h nicht. Ich weiss auch nicht mehr.

Danke
 
Hast du das Kommando denn auch im Visual Studio Command Prompt (das im DOS Fenster auch alle notwendigen Visual Studio Variablen gesetzt sind) ausgeführt?

Du mußt die vsvars32.bat Datei einbinden die irgendwo unterhalb des Visual Studio Verzeichnisses liegt (common\tools\vsvars32.bat) - kann allerdings bei verschiedenen Versionen variieren.

Gruß

/edit: Ach ja, bei Visual Studio 6 heißt die Datei vcvars32.bat und liegt normalerweise im microsoft visual studio 6\vc98\bin Verzeichnis. Du kannst die Datei manuell mit
Code:
call PFAD_ZU_VCVARS\vcvars32.bat
noch nachladen.
 
Zuletzt bearbeitet:
Achtung, Code Correction Police ;-)

erkan erpolat hat gesagt.:
#include <iostream.h>

void main()
{
cout<<"hallo"<<endl;

return;

}

Wenn Du einen Standard C/C++ Header einbinden willst, brauchst Du das Suffix .h nicht. Es ist also sauberer #include <iostream> zu schreiben (äquivalent <stdio> statt <stdio.h>). Die Funktion main() muss mit dem Rückgabewert int und nicht void angegeben werden, auch wenn unter C++ die return-Anweisung fehlen darf.
Du solltest unbedingt den Namensraum bekannt machen, dessen Du Dich mittels cout und endl bedienen möchtest, also entweder global in der Datei mittels using namespace std; oder (meiner Meinung nach besser) vor die Elemente cout und endl das Präfix std:: setzen. Schließlich ist es noch guter Stil, wenn man bei einer int main() Funktion dann abschließend ein return 0; angibt.
Ein sauberes Hallo Welt Programm unter C++ sieht schließlich so aus:
Code:
#include <iostream>

int main()
{
        std::cout << "Hallo Welt" << std::endl;
        return 0;
}

Du solltest Dir diese kleinen Regeln gleich von Beginn an merken und am besten auch immer so Deine Programme kompilieren, dass möglichst viele Warnungen ausgegeben werden. Mit dem gcc wären das so Schalter wie -W -Wall -pedantic, mit Visual Studio kenne ich mich leider nicht aus, aber da gibts bestimmt etwas ganz ähnliches.
 
Zurück