有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在C++和java之间使用JNI通信时,我在哪里保存“这个”?

我有一个C++类,叫做^ {CD1>}/P>

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)
}

为了说明问题,我的问题是: 是否可以将我的本地kitten返回到java代码?怎样这是正确的方法吗


共 (1) 个答案

  1. # 1 楼答案

    <> >一般问题是如何从C++传递指针到java并返回它,E^ >,在{{CD1>}指针中没有什么特殊性。Roman Kennke的old post是最好的文章之一,但是the short answer可以在上面找到:

    you can use Java long to get and set pointers, unless in your natie architecture pointers are more than 64 bit.