ich folgendes Programm haben, die ich bin mit MinGW kompilieren:Programm arbeitet in cmd, tritt sofort mit dem Status 127 in Cygwin, keine Ausgabe in Emacs Shell
#include <iostream>
#include <string>
using namespace std;
int main() {
cout << "aoeu" << endl;
string str;
return 0;
}
Als ich das kompilieren und ausführen Programm in der Windows-Eingabeaufforderung, ich die folgende Ausgabe wie erwartet:
C:\p\conscell>conscell.exe
aoeu
Allerdings, wenn ich es in Cygwin laufen, ich die folgende Ausgabe (oder deren Fehlen):
$ ./conscell.exe
$ echo $?
127
Wie Sie sehen können, ist der Exit-Code 127, was anzeigt, dass die Datei oder eine Bibliotheksabhängigkeit nicht gefunden wurde. Wenn ich das Programm in M-x shell
in Emacs (das C:/Program Files/Emacs/libexec/emacs/25.3/x86_64-w64-mingw32/cmdproxy.exe
ausgeführt wird) ausführen, gibt es außerdem keine Ausgabe.
Wenn ich die string str;
Linie löschen, um das Programm zu diesem Wechsel:
#include <iostream>
#include <string>
using namespace std;
int main() {
cout << "aoeu" << endl;
return 0;
}
Dann Cygwin und Emacs kann die Datei finden, wie durch den Ausgang Cygwin erlebt:
$ ./conscell.exe
aoeu
Dies erscheint um anzuzeigen, dass die Verwendung eines std::string
im Programm bewirkt, dass es von einigen Dateien abhängt, die cmd finden kann, aber Cygwin und cmdproxy.exe nicht. Jede Hilfe, um herauszufinden, welche Dateien das sind, würde geschätzt werden.
Ziemlich sicher, das ist die Antwort (siehe Kommentare zu der anderen Antwort). Ich werde morgen alles testen. – jcarpenter2
Ja, das war es. Um genau zu sein habe ich die Namen aller DLLs, die geladen wurden, indem ich [diesen Code] (http://forum.cheatengine.org/viewtopic.php?t=563414) geändert habe und die exe gestartet habe, indem ich [cheat engine] (http://www.cheatengine.org/) obwohl jeder Debugger funktionieren sollte. Dann habe ich für jede geladene DLL 'where [dll]' in einem Terminal ausgeführt, um herauszufinden, woher es kam. Sie stammten alle aus system32 mit Ausnahme von 'libstdC++ - 6.dll', das von mingw UND von gtksharp stammte, das vor dem mingw in PATH erschien. In meinem Fall brauchte ich gtksharp nicht, also habe ich es deinstalliert und jetzt funktioniert alles. – jcarpenter2
Natürlich, wenn ich diese Programme Leuten geben werde, sollte ich entweder mit '-static-libC++' kompilieren oder die DLL trotzdem packen ... – jcarpenter2