我想创建一个 DLL,它将一个 java 类对象作为参数。假设我创建了一些本机方法,这些方法将 Human.class 实例作为参数。为了访问人类对象,我该如何编写它的 C++ 实现?有可能吗?
(请考虑,我根本没有使用 C++ 的经验。)
我已经做了一些研究,因为看起来我需要从 C++ 访问指针。这让我有点困惑,因为此时我不明白 C++ 应该如何了解人类对象及其属性。
例如
JNI类
public class FourthJNI {
public static native int returnAgeOfHuman(Human abc);
public static void main(String[] args) {
Human testHuman = new Human("ABC", 23, "M");
/* Call to shared library */
int ageOfHuman = FourthJNI.returnAgeOfHuman(testHuman);
System.out.println(testHuman.toString());
System.out.println("Age of Human: " + ageOfHuman);
}
}
生成的头文件
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class FourthJNI */
#ifndef _Included_FourthJNI
#define _Included_FourthJNI
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: FourthJNI
* Method: returnAgeOfHuman
* Signature: (LHuman;)I
*/
JNIEXPORT jint JNICALL Java_FourthJNI_returnAgeOfHuman
(JNIEnv *, jclass, jobject);
#ifdef __cplusplus
}
#endif
#endif
我的 C++ 实现应该是什么样子的?
至尊宝的传说
相关分类