我在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的old post,但可以在SO上找到the short answer: