2015-12-16 30 views
1

我目前正在將一個工具移植到Linux上。我使用單聲道來達到此目的,並且已經運行了主要工具。然而,這個工具調用另一個程序,它使用C++編寫,並使用g ++在Linux上本地編譯。我在移植過程中遇到了很多困難,但是它已經可以正常工作並運行了(按照預期方式運行./othertool.exe)。從Mono上運行的C#進程運行C++應用程序。運行檢測器錯誤

但是,當試圖在Mono上運行原始工具時,它在啓動其他工具時失敗,並顯示錯誤。

run-detectors: unable to find an interpreter for .../othertool.exe 

我不知道爲什麼出現這種情況,有一個Hello World測試時一樣,我設法從C#在Mono調用它來獲得C++程序的運行。我正在運行使用Process類的其他工具(請參閱代碼),該工具在hello world示例中可以正常工作。

var process = new Process 
{ 
    StartInfo = 
    { 
     FileName = baseDir + 
        Path.DirectorySeparatorChar + 
        "tools" + 
        Path.DirectorySeparatorChar + 
        "othertool.exe", 
     Arguments = arguments.ToString(), 
     UseShellExecute = false 
    } 
}; 

process.Start(); 
process.WaitForExit(); 

任何人都知道爲什麼會發生這種情況?谷歌不會產生任何東西,所以我猜這可能不常見。請隨時索取更多信息或清晰,因爲我可能已經遺漏了一些東西。

+0

使用'mono'爲您'filename'並通過基於CIL(EXE)組件作爲參數 – SushiHangover

+0

這不是CIL,另一個工具是使用g ++在Linux上自然編譯的。我在問題中添加了這個。 – Cameron

+0

'othertool.exe'是一個本地的C++/c可執行文件?你有一個'.exe'內核/外殼擴展註冊?如果是這樣,請嘗試從文件中刪除'.exe'擴展名。 – SushiHangover

回答

0

好吧,原來我是用某種方式使用Windows的內置版本而不是Linux版本。誰讓這發生?在使用正確的時候運行「良好」。 - Cameron

假設你在一個支持Linux的disto(如Ubuntu)上,冷卻的運行檢測器/解釋器故障通常(總是?)與PE可執行文件(.exe)問題(以及其他非Linux二進制文件)啓動PE格式但沒有安裝Wine之類的東西,你將會失敗。恕我直言:命名非PE /非CIL文件爲.exe是Linux形式壞... –   SushiHangover