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
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
相关文章推荐
- java程序调用C、C++动态库的几种实现方式,即JNI的应用方式
- Ubuntu下,Java中利用JNI调用codeblocks c++生成的动态库的使用步骤
- Ubuntu下,Java中利用JNI调用codeblocks c++生成的动态库的使用步骤
- Java调用C/C++实现的DLL动态库——JNI
- Java调用C/C++实现的DLL动态库——JNI
- JNI 使用java调用c++动态库
- Java调用C/C++实现的DLL动态库——JNI(转)
- JAVA使用JNI调用C/C++动态库
- Java调用C/C++实现的DLL动态库——JNI
- Ubuntu下,Java中利用JNI调用codeblocks c++生成的动态库的使用步骤
- Java调用C++编写的动态库(JNI)
- Java调用C/C++实现的DLL动态库——JNI
- windows7下,Java中利用JNI调用c++生成的动态库的使用步骤
- windows7下,Java中利用JNI调用c++生成的动态库的使用步骤
- Mac OS X 下编译jni动态库(java调用C++)
- Java调用本地C/C++动态库拾遗 JNI/JNA与名称粉碎
- AndroidJNI 通过C++调用JAVA
- Java使用JNI调用C/C++(windows和android平台)
- Eclipse CDT MinGW生成C++动态链接库及Java JNI的调用例子
- JNI:Java调用C/C++-传递空值(null)的处理方法