JNI :java 调用C++动态库

本文介绍如何使用Java通过JNI调用C/C++编写的动态链接库(.so文件)。主要内容包括正确加载.so文件的方法、指定.so文件路径的方式以及具体的Java代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

二:java调用so(C) 
   java和c / c++通信都可以通过jni来实现。 在java代码中: 
   System.loadLibrary("Hello"); 
   Hello不能写成Hello.dll或者Hello.so,它会根据系统平台自动填充,需要注意的是在unix/linux下生成.so动态库文件的时候, 

   需要在Hello.so前添加lib,否则找不到.so文件(libHello.so),运行的时候需要指定.so的路径: 

public class bridge{
    public bridge(){};
    public native String gasr(String vidioName);
    public native void cutFrame(String vidioName, String r);
    
    public static void main(String[] args)
    {
        try{

      #这里的C++ 动态库直接库名,不用绝对路径。但是在运行时候需要制定so库的绝对路径。

      # java  -Djava.library.path=/homw/user/so所在目录  -jar  Hello.jar 

            System.loadLibrary("bridge");
        }catch(UnsatisfiedLinkError e){
            e.printStackTrace();
        }
        bridge so = new bridge();
        
        so.cutFrame("/home/vedio/build/tmp/test.mp4", "0.1");
        String result = so.gasr("/home/vedio/build/tmp/test.mp4");
        System.out.println(result);
    }
}

 可以在任意路径执行。

  java c bridge.java 

   java  -Djava.library.path=/homw/user/so所在目录   bridge

   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值