通过JNI返回指向Java的类指针
Return a class pointer to Java by JNI
c++中已有一个类指针我如何通过JNI获得这个类指针和转换到java中的类
Class_A_B.cpp
Class ClassB
{
public:
int funcA();
int funcB();
}
Class ClassA
{
public:
virtual void func(){B = new ClassB();};
ClassB* B;
ClassB* GetClassB(){return B;};
}
Jni_Class_A_B.cpp
ClassA TestClassA = new ClassA();
extern "C"
JNIEXPORT jobject JNICALL Java_com_core_Android_getClassB(JNIEnv *env, jobject thiz)
{
return (jobject)TestClassA->GetClassB(); // It will crash, how to converter class pointer to jobject?
}
GetClassB.java
public native ClassB getClassB();
public void TestFunction()
{
ClassB B = getClassB();
}
没有办法将指向c++本机对象的指针(您称之为"类指针")转换为jobject
。实际上,如果可以这样做,很可能会导致JVM硬崩溃……因为Java GC将无法处理c++对象。
最好是将c++指针作为32位或64位整数传递/返回给Java,然后如果Java代码需要访问c++对象的状态或调用它的方法,则使用另一个JNI调用。
c++中有一个已经存在的类指针
不,没有。有一个指针指向类b的实例。
如何通过JNI获得这个类指针和转换到java中的类
你不能。它们不相等。不能将指向c++类实例的指针转换为对Java类的引用。
总之,你的问题没有意义。
相关文章:
- 为什么C++对链表中的下一个节点使用指针,而像 C# 或 Java 这样的语言只使用类 Node 的名称?
- 为什么我们需要在 C++ 中检查空指针,而在 Java 中不需要?
- SWIG:如何处理生成的 Java 代码中的指针
- 使用 JNI 通过从C++到 Java 的指针返回数据
- 如何将 java 函数指针传递给 c++ 本机代码
- 将指向数组的指针转换为 Java C++ (OpenCV)
- 来自Java,学习C++ - 理解函数的指针
- 就像Java中的指针C++一样
- Java C/C++ 转换中的指针
- 静态 c++ 对象中的 JNI 环境指针并调用连续两次使用字符串参数的 Java 函数会使 JVM 崩溃
- JNA(Java):如何将指针数组传递给结构
- C++ 将指针作为参数传递,并在 Java 中传递指针
- Java:接收指向其他方法(lambda)的指针的方法
- Java用JNI调用C++:为什么JNIEnv指针被取消引用两次
- c++到Java -函数指针
- Java中指针的使用
- c++中结构和指针的语法,相当于Java
- 访问JNI对象到Java层作为引用指针
- java真的有指针吗?
- 可以在java中访问c++中创建的指针吗?