为了账号安全,请及时绑定邮箱和手机立即绑定

java 调用第三方 动态库

java 调用第三方 动态库

ITMISS 2019-04-25 18:19:30
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这些都是可以的

查看完整回答
反对 回复 2019-05-06
?
波斯汪

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));
    }
}


查看完整回答
反对 回复 2019-05-06
?
达令说

TA贡献1821条经验 获得超6个赞

兄弟动态库,有加载进去吗?你动态库加载的路径对吗?


查看完整回答
反对 回复 2019-05-06
  • 4 回答
  • 0 关注
  • 613 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号