繁体   English   中英

如何从Java调用C ++目标文件中的函数?

[英]How to call a function in a c++ object file from java?

我有一个项目的现有cpp文件,我想将其用于Java中的应用程序。 我无法更改cpp文件。 如何从Java调用函数?

我正在Windows 10中使用JavaFX作为我的应用程序。 我看过一些有关JNI的文章,但似乎没有一个能解决我的问题。

如果不希望使用JNI或Swig或它的水平太低,

一个真正的钝器方法是将.cpp包装在c / c ++程序中,并构建一个转储到stdout / file的.exe。 然后通过外部shell命令在Java中执行该命令。

另一个不错的选择是

Apache节俭

从根本上讲,这可以处理所有问题,而且可以说到处都是(通过自动生成目标语言的代码来工作),这是我通常在RPC情况下推荐的方法。 但是,可能会涉及更多的安装成本(最终取决于您的实际需求)-也是因为您需要将.cpp托管在本地服务中(对于您而言)。

如果将库打包在共享对象或dll中,则还可以使用JNA: https : //github.com/java-native-access/jnahttps://github.com/java-native-access/jna /blob/master/www/GettingStarted.md

例如,您已经具有到Windows API的映射。 另一个示例是Java中mediainfo的映射: https : //github.com/andersonkyle/mediainfo-java-api/blob/master/src/main/java/org/apothem/mediainfo/api/MediaInfo.java

请注意,据我了解,这是基于JNI的:它简化了过程,因为您通常只需要在Java端声明接口并调用适当的方法即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM