我创建了一个C ++函数来添加两个数字:
#include <iostream>
extern "C" __declspec(dllexport)
int add (int x, int y)
{
return x + y;
}
并使用Java创建了两个使用JNA访问它的类:
package jniTest;
public class jnitest {
public static void main(String[] args) {
System.setProperty("java.library.path", "C:/cygwin/home/abc");
System.loadLibrary("add");
importClass lib = importClass.INSTANCE;
System.out.println(lib.add(10, 20));
}
}
主要测试类:
package jniTest;
import com.sun.jna.Library;
import com.sun.jna.Native;
public interface importClass extends Library
{
importClass INSTANCE = (importClass) Native.loadLibrary("add", importClass.class);
int add(int x, int y);
}
我收到以下错误: &#34;线程中的异常&#34; main&#34; java.lang.UnsatisfiedLinkError:java.library.path中没有添加 &#34;
答案 0 :(得分:0)
我相信你的大部分问题都是由于认为你直接使用JNI而不是JNA而在评论中引起的。
由于您使用的是JNA,因此您应该设置jna.library.path而不是java.library.path,并且不应该像直接使用JNI那样调用System.loadLibrary()。
将您的主班级更改为:
package jniTest;
public class jnitest {
public static void main(String[] args) {
// changed java to jna in next line.
System.setProperty("jna.library.path", "C:/cygwin/home/abc");
// remove this line System.loadLibrary("add");
importClass lib = importClass.INSTANCE;
System.out.println(lib.add(10, 20));
}
}