fannj 库不起作用

发布于 2024-11-16 19:22:51 字数 1147 浏览 3 评论 0原文

我正在尝试运行使用 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:你可以从这里获取。

I'm trying to run project which uses fannj library, but I'm getting error:

    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

This is what I did:

  • I put fannfloat.dll to C:\Windows\System32
  • I added fannj-0.3.jar to project
  • I added newest jna.jar to project

here is code:

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 is file from example package. fannfloat.dll: you can get from here.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

热血少△年 2024-11-23 19:22:51

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

JNA 文档对此进行了介绍。

The "@8" at the end of _fann_create_standard_array indicates that the library is using the stdcall calling convention, so your library interface needs to implement that interface (StdCallLibrary) and it will automatically get the function name mapper applied that converts your simple java name to the decorated stdcall one.

This is covered in the JNA documentation.

我最亲爱的 2024-11-23 19:22:51

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

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

    公共类 FannTest {
    公共静态无效主(字符串[] args){
        System.setProperty("jna.library.path", "C:/FANN-2.2.0-Source/bin");
    
        Fann fann = new Fann("C:/MySunSpots.net" );
        float[] 输入 = new float[]{0.686470295f, 0.749375936f, 0.555167249f, 0.816774838f, 0.767848228f, 0.60908637f};
        float[] 输出 = fann.run( 输入 );
        fann.close();
    
        for (float f : 输出) {
            System.out.print(f + ",");
        }
    }
    

    }

It was the first time I had to work with FANN and it took me some time to make it work.

  1. Downloaded Fann 2.2.0. Extract (in my case "C:/FANN-2.2.0-Source") and check the path of the fannfloat.dll file. This is the library that we will use later.
  2. Download fannj-0.6.jar from http://code.google.com/p/fannj/downloads/list.
  3. The dll is compiled for 32 bit environment. So, make sure you have a 32 bit Java installed (even in 64 bit Windows).
  4. I suppose you already have the .net file with your ANN. Write something like this in 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 + ",");
        }
    }
    

    }

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文