fannj图书馆不起作用

时间:2011-06-21 10:25:11

标签: java neural-network jna fannj

我正在尝试运行使用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.

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

这是我第一次与FANN合作,花了一些时间让它发挥作用。

  1. 已下载的Fann 2.2.0。解压缩(在我的例子中为“C:/FANN-2.2.0-Source”)并检查fannfloat.dll文件的路径。这是我们稍后将使用的库。
  2. http://code.google.com/p/fannj/downloads/list下载fannj-0.6.jar。
  3. dll针对32位环境进行编译。因此,请确保安装了32位Java(即使在64位Windows中)。
  4. 我想你已经有了ANN的.net文件。在Java中写这样的东西

    public class FannTest {
    public static void main(String[] args) {
        System.setProperty("jna.library.path", "C:/FANN-2.2.0-Source/bin");
    
        Fann fann = new Fann("C:/MySunSpots.net" );
        float[] inputs = new float[]{0.686470295f, 0.749375936f, 0.555167249f, 0.816774838f, 0.767848228f, 0.60908637f};
        float[] outputs = fann.run( inputs );
        fann.close();
    
        for (float f : outputs) {
            System.out.print(f + ",");
        }
    }
    

    }