我正在尝试运行使用fannj库的项目,但出现错误:

    Exception in thread "main" java.lang.UnsatisfiedLinkError: Error looking up function 'fann_create_standard_array':
    at com.sun.jna.Function.<init>(Function.java:179)
    at com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:347)
    at com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:327)
    at com.sun.jna.Native.register(Native.java:1355)
    at com.sun.jna.Native.register(Native.java:1032)
    at com.googlecode.fannj.Fann.<clinit>(Fann.java:46)
    at javaapplication9.JavaApplication9.main(JavaApplication9.java:14)
Java Result: 1


这是我所做的:


我把fannfloat.dll放到C:\ Windows \ System32
我在项目中添加了fannj-0.3.jar
我向项目添加了最新的jna.jar


这是代码:

public static void main(String[] args) {
    System.setProperty("jna.library.path", "C:\\Windows\\System32");
    System.loadLibrary("fannfloat");
    Fann fann=new Fann("D:\\SunSpots.net");
    fann.close();
}


SunSpots.net是示例包中的文件。 fannfloat.dll:you can get from here.

最佳答案

_fann_create_standard_array末尾的“ @ 8”表示该库正在使用stdcall调用约定,因此您的库接口需要实现该接口(StdCallLibrary),它将自动获得应用的函数名映射器,该函数将您的简单Java名称转换为装饰好的stdcall之一。

JNA文档中对此进行了介绍。

08-04 07:34
查看更多