シェルありませんWindowsでプログラムがコマンドプロンプト予想通り、私は次のような出力が得られます。プログラムはすぐcygwinの中で、ステータス127で終了し、CMDで動作し、emacsの中には何も出力は私がMinGWのを使用してコンパイルしています次のプログラムを、持っている
C:\p\conscell>conscell.exe
aoeu
は、私はCygwinの中でそれを実行したときしかし、私は次の出力を得る(またはその欠如):
$ ./conscell.exe
$ echo $?
127
ご覧のとおり、終了コードは127で、ファイルまたはライブラリの依存関係が見つからないことを示します。さらに、私がM-x shell
でプログラムを実行すると、出力はありません(C:/Program Files/Emacs/libexec/emacs/25.3/x86_64-w64-mingw32/cmdproxy.exe
)。
私はstring str;
行を削除し、これにプログラムを変更する:
#include <iostream>
#include <string>
using namespace std;
int main() {
cout << "aoeu" << endl;
return 0;
}
Cygwinの出力によって目撃として次にCygwinとEmacsは、ファイルを見つけることができます:
$ ./conscell.exe
aoeu
これが表示されますプログラム内でstd::string
を使用すると、cmdが検出できるいくつかのファイルに依存するが、Cygwinおよびcmdproxy.exeはそれに依存しないことを示すために使用します。それらがどのファイルであるかを理解する上での助けとなります。
これが答えであることを確かめてください(他の回答のコメントを参照)。私は明日すべてをテストし終えるでしょう。 – jcarpenter2
ええ、そうだった。正確には、[このコード](http://forum.cheatengine.org/viewtopic.php?t=563414)を変更して読み込まれたすべてのDLLの名前を取得し、[チートエンジン]を使用してexeを一時停止するhttp://www.cheatengine.org/)。デバッガは動作するはずです。次に、ロードされたDLLごとに、どこから来たのかを知るために端末で '[dll]'を実行しました。彼らはすべてmingwから来た 'libstdC++ - 6.dll'とPATHのmingwの前に出てきたgtksharpを除いてsystem32からのものでした。私の場合、gtksharpは必要ありませんでしたので、私はそれをアンインストールしました。 – jcarpenter2
もちろん、これらのプログラムを人に与えるつもりなら、 '-static-libC++'でコンパイルするか、あるいは、いずれにしてもDLLをパッケージ化する必要があります。 – jcarpenter2