PCL
)在Java代码中使用JNI,但是我得到了不一致的结果。我首先创建了一个
PointXYZ
类进行测试,它如下所示:
package pcl;
public class PointXYZ extends NativeObject {
PointXYZ() { }
@Override
public native void alloc(); // creates pointer + handle on the native side
@Override
public native void dispose(); // sets handle to 0 and deletes pointer
public native float getX();
// ...
}
javah
,使用CMake编译了所有内容,使用getter和setter对其进行了测试,所有内容都运行良好。
static {
System.setProperty("java.library.path", System.getProperty("user.dir") + "/lib");
System.loadLibrary("pcl_java_common");
}
@Test
void attributeAccessTest() {
PointXYZ p = new PointXYZ();
p.alloc();
p.setX(3);
assertEquals(p.getX(), 3);
p.dispose();
// all is good
}
现在我已经做了一个完全相同的步骤
PointXYZRGB
继承自的类
点XYZ
当我试着测试它抛出
java.lang.UnsatisfiedLinkError
. 以下是课程:
package pcl;
public class PointXYZRGB extends PointXYZ {
public PointXYZRGB() { }
@Override
public native void alloc();
@Override
public native void dispose();
public native short getR();
// ...
}
我已经检查了生成的
.dll
Dependency Walker
以及
方法都存在。有人知道问题出在哪里吗?
更新:
.dll文件
评论中要求的功能: