可以使用JNI引用Java代码中的C对象吗?
发布时间:2020-12-14 16:42:46 所属栏目:Java 来源:网络整理
导读:我没有看到任何地方(或者也许我很简单,没有看到它),但有没有办法使用JNI返回c / c对象,并在 java中使用该对象? 例如(很简单): class simpleClass{...private:int intVar;public:int getIntVar();void setIntVar(int someNum);...} 在我的java代码中,我该如
我没有看到任何地方(或者也许我很简单,没有看到它),但有没有办法使用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为你生成正确的包装方法 – 这实际上可以工作,而不是比你所计划的更多的工作:) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |