我正在尝试运行使用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
这就是我所做的:
这是代码:
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.
答案 0 :(得分:2)
_fann_create_standard_array末尾的“@ 8”表示该库正在使用stdcall调用约定,因此您的库接口需要实现该接口(StdCallLibrary)并且它将自动获取应用的函数名称映射器以转换您的简单java名称为装饰的stdcall one。
JNA文档中对此进行了介绍。
答案 1 :(得分:0)
这是我第一次与FANN合作,花了一些时间让它发挥作用。
我想你已经有了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 + ",");
}
}
}