使用 JNI 在 C++ 和 JAVA 之间进行通信时,我在哪里保存"this"?
Where do I save my "this" when communicating between C++ and JAVA using JNI?
我在c++中有一个类叫做kitten
class kitten
{
public:
void ChangeColor(int newColor);
int GetColor();
}
现在使用JNI,我想让我的java程序能够使用这个类。
我知道如何使用JNI给我的java程序调用C风格函数的能力,但这是一个成员函数。
我想添加一个C风格的函数叫做kitten* CreateNewKitten();
,其中有一行:return new kitten();
然后以某种方式将这个本地kitten
对象返回给JAVA,然后JAVA代码将调用C风格的函数:
ChangeColor(kitten* myKitten, int newColor)
{
myKitten->changeColor(color)
}
为了说清楚,我的问题是:是否有可能将本机小猫返回到java代码?如何?这是正确的方法吗?
一般的问题是如何从c++传递指针到Java并接收它返回,在this
指针中没有什么特别的。最好的文章之一是Roman Kennke的一篇老文章,但简短的答案可以在SO上找到:
你可以使用Java long来获取和设置指针,除非在你的本地架构中指针超过64位。
相关文章:
- C++我需要了解在哪里使用指针和双指针
- 未定义的引用在哪里
- 谷歌测试中的期望值存储在哪里
- 尽管遵循了规则,内存泄漏在哪里
- 静态数据成员模板专用化的实例化点在哪里
- 在哪里放置我的函数?进入我的母语 Gui 还是进入我的演示者?
- 在哪里声明结构运算符重载
- C++ 中的自定义异常:在哪里定义它们?
- 常量参数存储在哪里 (C++)?
- 如何在 c++ 中确定一条指令(以字节为单位)在哪里结束,另一条指令从哪里开始?
- 此递归函数的每次迭代的值存储在哪里?
- 如何告诉本机节点模块所需的dll存储在哪里?
- 在哪里存储跨平台C++应用存储?
- 我的共享内存对象保存在哪里
- 在哪里保存我的C++库?(乌班图)
- 我应该在哪里保存代码块项目
- Qt:保存Qt-creator应用程序的SQLite数据库的最佳"Path"在哪里?
- 我应该在哪里保存我的着色器代码
- 使用 JNI 在 C++ 和 JAVA 之间进行通信时,我在哪里保存"this"?
- 在哪里保存typedef的,我应该重复typedef的