exe-Programm funktioniert nicht ohne cygwin1.dll.
-
Hallo, zusammmmen!
Bin noch ein Neuling in der Programmierung. Ich lese z. Z. noch ein Lernbuch für c++. Deshalb ist meine Frage für euch vielleicht lächerlich, aber ich habe keine Ahnung.Zum ersten, mein Compiler heißt cygwin. Oder ist das die Linux-ähnliche Umgebung für Windows??? Egal, jedenfalls starte ich Cygwin und tippe dort g++ mit dem Namen des Programmes ein, um es zu komplimieren. Wenn ich das Programm nun starte, (es handelt sich um ein Konsolenprogramm) und zwar indem ich auf das Icon klicke, steht dar, dass die Datei Cygwin1.dll fehlt. Laut dem Lehrbuch muss ich die Datei Cygwin1.dll ins Windowsverzeichnis kopieren.
So weit so gut, aber wenn ich jetzt das Programm auf einem anderen Rechner benutzen will, müsste ich da die Cygwin1.dll auch ins Stammverzeichnis kopieren???
Denn, wenn ich zum Beispiel irgendein Programm aus 'nem Softwareladen kaufe, dann steht in der Bedinungsanleitung auch nichts davon, dass ich irgendeine cygwin1.dll Datei in das Stammverzeichnis kopieren soll.
Warum muss ich das aber dann für meine eigenen Programme tun? Das hat mich etwas verwirrt.
-
MarkusH schrieb:
So weit so gut, aber wenn ich jetzt das Programm auf einem anderen Rechner benutzen will, müsste ich da die Cygwin1.dll auch ins Stammverzeichnis kopieren???
auf jedem Rechner wo das Programm ausgeführt werden soll, muss diese DLL in einem der Systemverzeichnisse vorhanden sein. Oder mindestens in dem Verzeichnis wo dein Programm drin liegt.
Warum muss ich das aber dann für meine eigenen Programme tun? Das hat mich etwas verwirrt.
wegen cygwin. Wie du schon vermutet hast ist das kein Compiler sondern die Unix-Umgebung für Windows.
Du kannst mal versuchen mit -static zu kompilieren, dann wird nicht dynamisch gelinkt sondern alles kommt direkt in die .exe datei. Weiß aber nicht ob das auch bei cygwin funktioniert.
Ansonsten kannst du dir den MingW installieren, damit geht es über -static auf jeden Fall. MingW ist auch der gcc, aber direkt für Windows und ohne Cygwin.
(mingw müsste aber auch bei cygwin dabei sein)
-
Kompilier den Kram mit -fno-cygwin:
$ g++ -fno-cygwin foo.cc
-
Vielen Dank für eure Antworten!