JNI段错误创建新对象

时间:2016-05-20 03:14:02

标签: java segmentation-fault java-native-interface

我是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;
    }
}

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您的构造函数需要jobjectlong,并且您传递intlong long

也许你可能打算将int包装成java Integer?而且你应该将长篇文章转换为jlong,以防long longjlong属于同一类型。