2013-01-01 43 views
3

我想調用一個C++ exe文件到我的c#應用程序中,該應用程序需要一個命令行參數並返回結果,以便我可以在我的c#應用程序中使用它,不知道該怎麼做。在c#應用程序和C++ exe文件之間傳遞參數和返回

這裏的簡單示例,我嘗試和失敗: 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。我該怎麼辦 ?

+1

也許一個C++ - 做DLL將更好地滿足您的要求。 – chris

+2

你的C++代碼甚至有效嗎?這個'主要'簽名不是標準的。 – Mat

+0

你有沒有考慮調試?如果你的C++ main顯式返回'3',會發生什麼。忽略了'主要'參數(我並不滿意 - 請參閱Mat評論)。 –

回答

2

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; 
} 
+0

。非常感謝 。 –

相關問題