我是JNI(和java)的新手,所以如果这只是一个愚蠢的错误,我会事先道歉。但经过多次搜索,我无法找到解释或解决方案。
我有一个名为UnivariateSpline
的参数化Java类。 scipy
的Java构造函数接受一个对象Tagged<T>
和一个长Tagged<T>
。 C代码有一个值,应该创建一个值为T
的Tagged对象和该值的内存地址。但是,当我调用NewObject时,我得到一个段错误。不确定问题是否是泛型的类型构造函数(使用整数调用),Java / C整数类型(长对长对长),一个愚蠢的错误或我无法考虑的事情之间的不匹配。
Java类:
ptr
JNI代码:
v
控制台输出:
public class Tagged<T> {
private final T value;
private long ptr;
private TaggedValue(T value, long ptr){
this.value = value;
this.ptr = ptr;
}
}
感谢您的帮助!
答案 0 :(得分:1)
您的构造函数需要jobject
和long
,并且您传递int
和long long
。
也许你可能打算将int
包装成java Integer
?而且你应该将长篇文章转换为jlong
,以防long long
和jlong
属于同一类型。