我在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位。