0 0

java 调用第三方 动态库5

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)
#endif


test.cpp

#include "test.h"

int  add (int a,int b)
{
return a+b;
}



编译libtest.so
g++ -fPIC -shared test.cpp  -olibtest.so

编译运行java
javac TestJava.java
java TestJava

报错如下:

Exception in thread "main" java.lang.UnsatisfiedLinkError: TestJava.add(II)I
at TestJava.add(Native Method)
at TestJava.main(TestJava.java:11)
这个什么原因,请指教。

4个答案 按时间排序 按投票排序

0 0

采纳的答案

用法错误,根据JNI 官方提供的文档,使用JNI调用第三方动态库需要 用javah编译生成头文件,根据这个头文件编译生成动态库才能调用成功,如果单纯调用第三方库的话推荐使用JNA 或者jnative这些都是可以的

2014年7月21日 21:32
0 0

java.lang.UnsatisfiedLinkError: no MRChkLib in java.library.path,Error loading library MRChkLib

这样的错误信息,那么是因为MRChkLib.dll没有拷贝到windows的System32目录下. (MRChkLib.dll是加密锁的JAVA接口文件,文件在报表安装目录DogDriver/JavaAPI下可以找到) 并且要注意PATH环境变量中要包含System32目录。(如果服务器操作系统是Linux,那么使用报表安装目录DogDriver/JavaAPI 下的libMRChkLib.so文件,将libMRChkLib.so复制到WebServer的启动bin目录。如果在这个目录下仍然出现can not load library错误,请设置系统环境变量LD_LIBRARY_PATH的值为libMRChkLib.so所在的目录。
例如:如果libMRChkLib.so在/somedir目录下,则 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/somedir)

2014年7月21日 15:37
0 0

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

2014年7月21日 15:15
0 0

代码有问题吧

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

2014年7月21日 12:38

相关推荐

    [测试通过]JAVA调用第三方DLL的简单方法:JNA及DEMO

    首先,我们来看标题中的关键点:“JAVA调用第三方DLL的简单方法”。在Java中,由于其跨平台的特性,原生与操作系统交互并不直接,而JNA提供了一种桥接机制,使得Java可以直接调用Windows、Linux等操作系统中的DLL...

    java使用(jna)调用c/c++第三方动态库 dll文件 所用jar包

    Java 使用 JNA(Java Native Access)调用C/C++编写的第三方动态库(DLL文件)是一种常见的技术,它允许Java程序直接与本地操作系统接口交互,而无需编写JNI(Java Native Interface)代码。JNA 提供了一种相对简洁...

    java调用第三方的短信接口

    以上就是关于“Java调用第三方短信接口”的主要知识点。在实践中,还需要结合具体的第三方平台API文档来编写代码,确保符合其规范和要求。文件"SMSSend"可能是示例代码或者相关文档,对于具体实现细节,建议参照该...

    Java加载dll,导致Java进程内存泄露

    Java加载DLL(动态链接库)在某些情况下可能会引发内存泄漏问题,这主要涉及到Java与C/C++之间的交互,以及JNI(Java Native Interface)的使用。JNI是Java平台标准的一部分,它允许Java代码和其他语言写的代码进行...

    通过JNI调用第三方动态库(生成两个.so文件)

    通过JNI调用第三方动态库在Android开发中是常见操作,涉及到的知识点包括Java本地方法声明、JNI接口定义、Makefile编写以及NDK编译。在实际操作过程中,务必注意代码的正确性,因为一个小错误都可能导致编译失败或...

    Java通过JNI调用DLL动态库

    Java通过JNI调用DLL动态库,亲测试编写

    安卓NDK调用第三方动态库方法实例

    本实例主要探讨的是如何在Android项目中使用NDK调用第三方动态库,即.so文件。 首先,理解NDK和JNI的概念至关重要。NDK是一组工具,可以帮助开发者编写原生代码,并将其集成到Android应用中。JNI则是Java平台标准的...

    调用第三方so库文件

    标题中的“调用第三方so库文件”涉及到了Android应用程序与本地代码(Native Code)的交互,主要通过Java Native Interface(JNI)来实现。下面将详细阐述这一过程及其相关知识点。 1. **JNI简介**: JNI是Java...

    JNI调用第三方动态库

    本教程将深入探讨如何在Android平台上通过JNI调用第三方动态库。 1. **JNI基础** - **JNI接口定义**:JNI接口定义了Java和本地代码之间的桥梁,包括函数指针类型、数据类型转换以及方法ID和类ID的概念。 - **本地...

    java调用第三方dll心得.docx

    在本文中,我们将探讨如何在Java中调用第三方DLL文件,特别关注在J2EE项目中与面部识别考勤终端机交互的情况。首先,我们要理解的是,Java本身并不直接支持调用本地DLL库,但通过JNI(Java Native Interface)可以...

    android调用第三方so库

    这篇内容将深入探讨如何在Android应用中调用已编译的第三方.so库,以实现Java与C/C++之间的交互。 首先,了解JNI(Java Native Interface)是关键。JNI是Java平台的标准组成部分,它允许Java代码和其他语言写的代码...

    java调用第三方dll

    ### Java调用第三方DLL知识点详解 ...通过上述步骤,我们可以实现Java调用第三方DLL的功能,这对于需要访问底层硬件或利用已有C/C++库的情况非常有用。正确地运用JNI不仅可以扩展Java的应用范围,还能提高程序的性能。

    andoid studio中JNI调用第三方库例子

    这个例子"android studio中JNI调用第三方库例子"是基于谷歌官方提供的"hello-libs"示例项目,旨在帮助开发者了解如何在Android Studio中使用JNI来调用预编译的第三方动态链接库(.so文件)。 首先,我们需要理解JNI...

    Java调用动态链接库(Java 调用 DLL)

    Java本身不支持直接调用DLL,但可以通过JNI(Java Native Interface)或者第三方库如JNA(Java Native Access)来实现这一功能。 首先,我们来看JNI。JNI是Java平台标准的一部分,它为Java程序员提供了一种安全、...

    java调用dll或so库示例

    Java调用DLL或SO库是跨平台编程中的一个重要技术,主要通过Java本地接口(JNI)实现。JNI允许Java代码直接调用本地(如C++)编写的动态链接库(DLL,Windows系统)或共享对象库(SO,Linux系统),从而扩展Java应用...

    JAVA调用第三方DLL的方法

    在Java编程中,有时我们需要调用第三方的DLL(动态链接库)来实现特定的功能,这在集成外部系统或使用特定硬件设备时尤为常见。本文将详细介绍如何在Java中调用第三方DLL,以及在不同操作系统上的部署策略。 首先,...

    java调用C语言编写的so库中的函数,java调用C语言编写的dll库中的函数

    Java可以通过JNI(Java Native Interface)或者第三方库如JNA(Java Native Access)来实现这一功能。本文将深入探讨这两种方法,以及如何在Java中调用C语言编写的SO(Linux下的动态链接库)和DLL(Windows下的动态...

    java连接调用dll动态库

    此外,为了在不同环境中更好地管理和加载DLL,可以考虑使用第三方库,如JNA(Java Native Access)或Jacob。这些库提供了更高级别的抽象,简化了与本地代码的交互,无需编写C/C++代码。不过,本例中提到的是通过JNI...

    [测试通过]JAVA调用第三方DLL的简单方法:JNA及DEMO.rar

    本篇将详细介绍如何使用JNA在Java中调用第三方DLL,并通过提供的DEMO来演示这一过程。 首先,`mathfundll.dll`是我们的目标DLL文件,它包含了我们需要调用的一些数学计算函数。JNA允许我们将这些函数映射到Java类中...

    Java中调用动态库dll的方法 源代码

    总的来说,Java调用动态库DLL主要依赖于JNI或第三方库。虽然JNI提供了更底层的控制,但设置过程较为复杂;而JNA则提供了更为方便的API,降低了门槛。在实际项目中,应根据需求和团队能力选择合适的方法。

Global site tag (gtag.js) - Google Analytics