在Mono上运行的C#进程中运行C ++应用程序。运行检测器错误

时间:2015-12-16 14:26:14

标签: c# c++ linux mono

我目前正致力于将工具移植到Linux。我使用mono来实现这一点,并且已经运行了主要工具。但是,这个工具调用另一个程序,该程序用C ++编写,并在Linux上用g ++本地编译。我把这个移植过来有很多困难,但让它运行并运行(按预期运行./othertool.exe)。

但是,当尝试在Mono上运行原始工具时,它在启动其他工具时失败,从而产生错误。

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

我不确定为什么会发生这种情况,因为在使用hello世界进行测试时,我设法通过在Mono上使用C#调用它来运行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();

任何人都知道为什么会这样吗?谷歌没有产生任何东西,所以我想这可能不常见。随意提出更多信息或清晰度,因为我可能会遗漏一些东西。

1 个答案:

答案 0 :(得分:0)

好的,事实证明我在某种程度上使用Windows内置版本的othertool而不是Linux版本。谁让这种情况发生?使用正确的时候运行“罚款”。 - 卡梅隆

酷,运行检测器/解释器故障通常(总是?)与PE可执行(.exe)问题(以及其他非Linux二进制文件)有关,假设您在Linux disto(如Ubuntu)上支持启动PE格式但没有安装Wine之类的东西,你将失败。恕我直言:将非PE /非CIL文件命名为.exe是Linux上的错误形式...                      - SushiHangover