Java调用C/C++库用Native

发布时间:2024-10-31 15:28:47 作者:小樊
来源:亿速云 阅读:78

在Java中调用C/C++库,可以使用Java Native Interface (JNI) 或者 Java Native Access (JNA)

  1. 创建一个Java类,声明一个本地方法:
public class NativeLibrary {
    // 声明本地方法,使用native关键字
    public native String nativeMethod();

    // 加载包含本地方法实现的C/C++库
    static {
        System.loadLibrary("native-library");
    }

    public static void main(String[] args) {
        NativeLibrary nativeLibrary = new NativeLibrary();
        System.out.println(nativeLibrary.nativeMethod());
    }
}
  1. 使用C/C++编写本地方法实现:
#include <jni.h>
#include <string.h>

// 将Java类名和方法名转换为C/C++中的字符串
JNIEXPORT jstring JNICALL Java_NativeLibrary_nativeMethod(JNIEnv *env, jobject obj) {
    return (*env)->NewStringUTF(env, "Hello from C/C++!");
}
  1. 编译C/C++代码为动态链接库(Windows下为.dll文件,Linux下为.so文件):

对于Linux:

gcc -shared -fPIC -o libnative-library.so NativeLibrary.c -I${JAVA_HOME}/include -I${JAVA_HOME}/include/linux

对于Windows:

gcc -shared -fPIC -o native-library.dll NativeLibrary.c -I"%JAVA_HOME%/include" -I"%JAVA_HOME%/include/win32"
  1. 运行Java程序:
java -Djava.library.path=. NativeLibrary

注意:在运行Java程序时,需要将.替换为包含动态链接库的目录。

这样,Java程序就可以调用C/C++库中的本地方法了。

推荐阅读:
  1. 如何解析java web项目,k8s的yaml模板
  2. Java内存数据区域的示例分析

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java

上一篇:JNI与Native关键字比较

下一篇:Java Native关键字安全性探讨

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》