如何从Java调用C ++?

我想从Java调用C ++方法。 我读到了JNI,但我没有得到如何获取所有库文件以及我应该保留它以便从命令行运行程序。

有没有办法从Eclipse本身调用C ++方法,因为我用它来运行Java类。

如果JNI太复杂,你可以看看JNA 。 在第一种情况下,您必须创建本机包装器代码(在C或C ++中)以加入Java和本机(C ++ / C / …)代码。 在第二种情况下,它在运行时完成(因此您只需要Java代码+配置)。

虽然我过去使用过JNI-C ++桥接(虽然只是一点点) – 但它可能有点难看。 您可能需要考虑使用SWIG来帮助您生成所有杂乱的锅炉板代码。

我之前使用过JNA来获得简单的界面,它简单而优雅。 但是,建议如果有复杂的界面,那么最好使用SWIG。

有一些很好的答案可以比较SWIG与JNI和JNA。 现在问了一会儿问题。

SWIG与JNI和JNA

可以使用JNA代替JNI。

所有你需要的是下载JNA jarhttps://github.com/java-native-access/jna#download )这应该包含在你的java项目中。

您需要在项目属性中提供c ++库的位置。

  • 右键单击项目
  • 在VM选项中包括此-Djava.library.path =“C:您的dll位置”

访问此站点以获取示例,该示例还包含Java和c ++项目的源代码,以了解其工作原理。 ( http://blog.mwrobel.eu/how-to-call-dll-methods-from-java/#a_downloads

JavaCPP – https://github.com/bytedeco/javacpp

它提供了对Java内部本机C ++的高效访问。 在引擎盖下,它使用JNI,因此它适用于Java SE的所有实现。

比JNA / JNI容易得多

How to call a C/C++ function from Java then you can use Java Native Interface (JNI), part of the Java platform, is an interface that enables communication between Java applications running on a Java Virtual Machine (JVM) and native applications or libraries written in other programming languages (eg C, C++). you can use some below urls for as examples. http://malinsky.eu/blog/how-to-call-ac-function-from-java/ https://www3.ntu.edu.sg/home/ehchua/programming/java/JavaNativeInterface.html