我目前正致力于将工具移植到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();
任何人都知道为什么会这样吗?谷歌没有产生任何东西,所以我想这可能不常见。随意提出更多信息或清晰度,因为我可能会遗漏一些东西。
答案 0 :(得分:0)
好的,事实证明我在某种程度上使用Windows内置版本的othertool而不是Linux版本。谁让这种情况发生?使用正确的时候运行“罚款”。 - 卡梅隆
酷,运行检测器/解释器故障通常(总是?)与PE可执行(.exe
)问题(以及其他非Linux二进制文件)有关,假设您在Linux disto(如Ubuntu)上支持启动PE格式但没有安装Wine之类的东西,你将失败。恕我直言:将非PE /非CIL文件命名为.exe
是Linux上的错误形式...
- SushiHangover