从Mono上运行的C#进程运行C++应用程序.运行检测器错误

Running C++ app from C# process running on Mono. run-detectors error

本文关键字:运行 应用程序 C++ 检测器 错误 进程 Mono      更新时间:2023-10-16

我目前正在将一个工具移植到Linux。我正在使用mono来实现这一点,并且已经运行了主要工具。然而,该工具调用了另一个程序,该程序是用C++编写的,并在Linux上使用g++进行本机编译。我在移植它时遇到了很多困难,但要让它正常工作和运行(使用./othertool.exe按预期运行)

然而,当尝试在Mono上运行原始工具时,它无法启动另一个工具,从而出现错误。

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

我不知道为什么会发生这种情况,因为当使用hello世界进行测试时,我通过在Mono上从C#调用C++程序来运行它。我正在使用Process类运行另一个工具(请参阅代码),该类与helloworld示例配合良好。

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

有人知道为什么会发生这种事吗?谷歌没有任何收益,所以我想这可能并不常见。请随意询问更多信息或澄清,因为我可能遗漏了一些内容。

好吧,原来我使用的是其他工具的Windows构建版本,而不是Linux版本。谁让这种事发生的?使用正确的选项时运行"良好"。–Cameron

酷的运行检测器/解释器故障通常(总是?)与PE可执行文件(.exe)问题(以及其他非Linux二进制文件)有关,假设您所在的Linux disto(如Ubuntu)支持启动PE格式,但没有安装Wine之类的软件,则会出现故障。IMHO:将非PE/非CIL文件命名为.exe在Linux上是不好的形式。。。–nbsp;Sushi Hangover