可以使用JNI引用Java代码中的C对象吗?

前端之家收集整理的这篇文章主要介绍了可以使用JNI引用Java代码中的C对象吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我没有看到任何地方(或者也许我很简单,没有看到它),但有没有办法使用JNI返回c / c对象,并在 java中使用该对象?

例如(很简单):

class simpleClass{
...
private:
int intVar;
public:
int getIntVar();
void setIntVar(int someNum);
...
}

在我的java代码中,我该如何去做:

...
simpleClass sc = new simpleClass();
sc.setIntVar(9);
System.out.println(sc.getIntVar());
...

我意识到这是一个非常简单的例子,但我只是在寻找概念 – 我记得在C中的类是非常大的,我希望避免创建一个TON的包装方法

如果不可能的话,只是希望能节省几天的编码

解决方法

不,你不能. C和Java ABI是完全不同的 – 一个,c不定义一个.真的c有这么多的功能,无法映射到Java,所有这些只是不能工作. Java将如何处理c模板?指向原语?不是指针的对象?

现在你可以做什么,是使用SWIG为你生成正确的包装方法 – 这实际上可以工作,而不是比你所计划的更多的工作:)

猜你在找的Java相关文章