我得到了一个用C++编写的应用程序,我可以通过用C++为它编写插件来扩展应用程序的功能。
我主要想做的是将Java嵌入到这个应用程序中。这已经用Python完成了(不是我做的)。
我读过一些关于JNI的文章,但总会有使用Java类的完整程序员的演讲。
我想要做的是,在Java语言中使用C++中的类来与应用程序交互。
在这种情况下,它是一个3D应用程序,名为Cinema4D。
有没有一种方法可以在应用程序运行时(以某种脚本语言)使用JNI或类似的东西编译和评估Java代码?
嵌入完成后的虚构代码示例:
import c4d.documents.*;
class Main {
public static void main() {
BaseDocument doc = GetActiveDocument();
BaseObject op = doc.GetActiveObject();
if (op != null) {
op.Remove();
}
}
}
此代码应与Cinema4D交互以删除所选对象。
发布于 2011-09-22 04:45:49
对于您描述的场景,JNI可能是最好的方法。您将把C++应用程序的功能公开为DLL,它可以合并到Java应用程序中,也可以从Java应用程序中使用。
发布于 2011-09-22 04:54:21
您可能需要重新考虑您的设计。对于这类任务,Java不是一个好的选择。java标准库中没有类似于python或shell中的eval()
的eval()
函数。
您可以使用JNI在C++代码中创建一个java,但它有点重。仍然存在如何从java源创建字节码问题。要在C++中编译和运行java代码,您必须嵌入大量代码。别干那事。一定有更好的解决方案。
例如,您可以在C++代码和单独的java代码之间使用一些RPC (SOAP、XML-RPC、Corba)。如果您需要执行一些eval()
-like java调用,您可以使用Groovy或Jython (两者都有eval()
,可以访问所有标准java库,并且可以运行常规java类)。
https://stackoverflow.com/questions/7506329
复制相似问题