4

コマンド ライン引数を受け取り、結果を返す C++ exe ファイルを C# アプリケーションに呼び出して、C# アプリケーションで使用できるようにしたいのですが、その方法がわかりません。

ここに私が試して失敗した簡単なサンプルがあります: c++ コード: returner.exe

#include<iostream>
#include<cstdlib>
using namespace std;
int main(string argc , string argv)
{
    int b= atoi(argv.c_str());
    return b;
}

c# コード:

 private void button1_Click(object sender, EventArgs e)
        {
            ProcessStartInfo stf = new ProcessStartInfo("returner.exe", "3");
            stf.RedirectStandardOutput = true;
            stf.UseShellExecute = false; 
            stf.CreateNoWindow = true;

            using (Process p = Process.Start(stf))
            {
                p.WaitForExit();
                int a = p.ExitCode;
                label1.Text = a.ToString();
            }
        }

ラベルに 3 が表示されることを期待しています。しかし、それは常に 0 です。私は何をすべきか ?

4

1 に答える 1

3

あなたの署名mainは正しくありません、それは次のようになります:

int main(int argc, char *argv[])
{
    // you are better to verify that argc == 2, otherwise it's UB.
    int b= atoi(argv[1]);
    return b;
}
于 2013-01-01T19:41:47.833 に答える