如何调用C ++与Java功能(How to call c++ functionality from

2019-07-31 04:20发布

我有一个Java程序,主要是图形用户界面,它表明写入到从C ++命令行工具的XML文件中的数据。 现在我想将按钮添加到Java程序来刷新数据。 这意味着,我的程序必须调用C ++功能。

是刚刚从Java通过系统调用调用程序的最佳方式? C ++的程序会被编译为Mac OS和Windows,并应始终在同一个目录下java程序。

我想生成一个可执行文件可以在C程序存储在罐内,并从我的节目叫什么?

Answer 1:

假设没有更好的沟通方法是可用(SOAP,ICE,插座等),我会打电话给使用可执行Runtime.exec() JNI可用于直接连接,但我不会推荐它。 不,你不能把一个可执行的JAR。 那么你可以,但你不能运行它,因为shell不知道如何运行它。



Answer 2:

如果你有机会获得代码,并要与外部程序的“互动”的经验(如拨打电话,得到的结果,使更多的调用),调查JNI,它可以让你从Java应用程序由包括调用C或C ++代码&链接JNI汁C或C ++与App。

看到:

http://en.wikipedia.org/wiki/Java_Native_Interface

http://www.acm.org/crossroads/xrds4-2/jni.html

如果你真的只需要一个“启动应用程序并得到结果”之类的解决方案,检查出的Runtime.exec(),它可以让你启动一个外部程序和捕获它的输出。

请参阅: http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html?page=1

http://www.rgagnon.com/javadetails/java-0014.html



Answer 3:

您可能还需要看看Java本地访问API(JNA) 。



Answer 4:

要回答你的最后一个问题,你不能从你的罐子中运行的可执行文件。

但是,您可以存储在您的罐子内,并在运行之前它解压到一个临时目录/文件(检查是否有其存在的第一时间,必要时提取)。 这将在一定程度简化您的分布,您只有罐子分发,并确保你正在运行符合您的震动Java代码的可执行文件。



文章来源: How to call c++ functionality from java