如何使用 NestedVM 从 C++ 编译为 Java?

问题描述 投票:0回答:1

我终于弄清楚如何构建NestedVM。它是一个 C++ 到 Java 的编译器。你几乎必须使用 CentOS 来构建它。现在唯一的问题是我不知道如何从那里使用它。没有太多文档。它只是说这些工具将在上游/安装中可用,它们确实如此,但我应该如何知道下一步该做什么?我应该运行哪个工具以及如何运行命令?不知何故,我应该将其编译为 MIPS,然后编译为 Java 字节码。有没有人有更多这方面的经验?我尝试过研究,但并没有真正帮助。

cross-compiling
1个回答
0
投票

我使用了很多 NestedVM 来编译 C 程序,然后从 Java 运行。

这里是一个运行已编译的 Mips 代码的类

运行 NestedVM 生成的类文件的方式是:

Class cl = Class.forName("sw_emulator.software.asm.Tass64");
Method mMain = cl.getMethod("run", new Class[]{String[].class});
mMain.invoke(cl.newInstance(), new Object[]{args});

本质上,您在调用 Mips 转换的字节码类时运行 C 程序的“main”方法。

因此,您需要使用从文件读取输入并将输出写入文件的 C 代码来与 Java 交互(即使 NestedVM 似乎具有某种可用于交互的共享内存)。

实际上,我在使用这些工具编译C++代码时遇到了很多问题,但这是针对使用的非常旧的GCC(4.8),而要编译的程序使用更现代的GCC(为此,我已经分叉了该项目,并且我尝试将 NestedVM 调整为最后一个可用的 GCC)

© www.soinside.com 2019 - 2024. All rights reserved.