您的位置:首页 > 编程语言 > C语言/C++

JNI :java 调用C++动态库

2017-12-14 17:55 253 查看
二: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

   
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: