public class TestJava{
{
System.loadLibrary("test");
}
public native int add(int a,int b); public static void main(String argvs[])
{
TestJava ts=new TestJava();
System.out.println(ts.add(4,5));
}
}c++ test.h#ifndef TEST_H
#define TEST_H
int add (int a,int b)
#endiftest.cpp#include "test.h"int add (int a,int b){return a+b;}编译libtest.sog++ -fPIC -shared test.cpp -olibtest.so编译运行javajavac TestJava.javajava TestJava报错如下:Exception in thread "main" java.lang.UnsatisfiedLinkError: TestJava.add(II)Iat TestJava.add(Native Method)at TestJava.main(TestJava.java:11)这个什么原因,请指教。
4 回答

元芳怎么了
TA贡献1798条经验 获得超7个赞
用法错误,根据JNI 官方提供的文档,使用JNI调用第三方动态库需要 用javah编译生成头文件,根据这个头文件编译生成动态库才能调用成功,如果单纯调用第三方库的话推荐使用JNA 或者jnative这些都是可以的

波斯汪
TA贡献1811条经验 获得超4个赞
代码有问题吧
public class TestJava{ static { System.loadLibrary("test"); } public native int add(int a,int b); public static void main(String argvs[]) { TestJava ts=new TestJava(); System.out.println(ts.add(4,5)); } }
添加回答
举报
0/150
提交
取消