библиотека fannj не работает - PullRequest
1 голос
/ 21 июня 2011

Я пытаюсь запустить проект, который использует библиотеку 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: вы можете получить здесь.

Ответы [ 2 ]

2 голосов
/ 01 июля 2011

«@ 8» в конце _fann_create_standard_array указывает на то, что библиотека использует соглашение о вызовах stdcall, поэтому интерфейсу вашей библиотеки необходимо реализовать этот интерфейс (StdCallLibrary), и он автоматически применяет преобразователь имени функции, который преобразует ваш простой имя java для оформленного стандартного вызова.

Это описано в документации JNA.

0 голосов
/ 01 ноября 2012

Это был первый раз, когда мне пришлось работать с FANN, и мне потребовалось некоторое время, чтобы заставить его работать.

  1. Скачанный Fann 2.2.0. Извлеките (в моем случае "C: /FANN-2.2.0-Source") и проверьте путь к файлу fannfloat.dll. Это библиотека, которую мы будем использовать позже.
  2. Скачать fannj-0.6.jar из http://code.google.com/p/fannj/downloads/list.
  3. DLL скомпилирована для 32-битной среды. Итак, убедитесь, что у вас установлена ​​32-битная Java (даже в 64-битной Windows).
  4. Я полагаю, у вас уже есть файл .net с вашим ANN. Напишите что-нибудь подобное на 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 + ",");
        }
    }
    

    }

...