【发布时间】:2017-07-20 08:46:36
【问题描述】:
我想用构造函数和一个返回字符串的方法创建 C++ 类。我的问题是:如何使用 C++ 构造函数在 Java 中初始化“本机类”类型的对象,然后从这个 Java 对象调用本机方法?
【问题讨论】:
-
要明确一点:Native = C,而不是 C++。你不能将 C++ 与 JNI 一起使用,除非你创建一个将 C 与 Java 绑定的接口,然后在 C 中实例化 C++ 类,后者使用 C++ 编译器编译,因为 C++ 编译器理解 C。
-
请通过链接链接:github.com/googlesamples/android-ndk。我相信它会对你有所帮助。
-
@TheQuantumPhysicist 这完全不正确。只要原生 JNI 方法观察到
javah生成的签名,就可以使用 C++。二十年前我就这样做了。 -
@TheQuantumPhysicist 是的。我已经做到了。这就是
javah生成extern "C"语句的原因。 -
@EJP 是的,这是您的意见。如果
javah生成本机接口,这并不意味着 C++ ABI 可以直接与 JNI 接口。 NATIVE = C. 无论你如何绕开这个事实,它仍然是正确的。否则 SWIG 之类的工具将毫无用处。你显然不明白我在说什么,并且被你的经验所驱动,而不是学习或理解你的同龄人的意愿。我真的没有时间对你的判断态度。
标签: java android c++ java-native-interface native