我正在尝试运行使用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文档中对此进行了介绍。