Java调用C语言程序时,主要是涉及到操作系统底层的事件。这种时间Java无法处理,例如用户上传一个视频文件,需要后台给视频加上水印,或者后台分离视频流和音频流。只能通过调用C语言处理。
拜城网站建设公司创新互联,拜城网站设计制作,有大型网站制作公司丰富经验。已为拜城1000+提供企业网站建设服务。企业网站搭建\成都外贸网站建设要多少钱,请找那个售后服务好的拜城做网站的公司定做!
使用Java如何去调用C语言的接口呢?使用Java的JNI技术。
具体调用步骤如下:
1.首先创建Java文件 HelloJni.java ,并创建native方法。
2.编译Java文件并生成java头文件。
3.创建C语言文件,HelloWorld.c。
4.生成动态链接库文件 libhello.so。
5.设置动态链接库文件的目录。
6.把刚才生成的so文件拷贝到/home/lib下,然后执行class文件。
有两种可能,第一种是你把这两个类放在了不同的包中,
我直接赋值粘贴你的代码新建了一个包test2,创建了这两个类,记得把你的m.max1(a,b);参数加上,(并且输入的时候注意先输入大的数字,比如3,2就会输出3,因为你的代码如果输入2,3则没有任何显示)
以下是可行的:
package test2;
public class max{
public static void max1(int a,int b){
if(ab)
System.out.println(a);
}
}
//注意在同一个包中创建
package test2;
import java.util.Scanner;
public class Max2 {
public static void main(String arg[]) {
Scanner scanner = new Scanner(System.in);
max m = new max();
int a = scanner.nextInt();
int b = scanner.nextInt();
m.max1(a,b);
}
}
如果你不想在同一个包中创建,那就加一个语句,比如你的max类写在Package test1中,那就加这句import test1.max;
代码如下:
package test2;
import test1.max;//在这里加入了引入包
import java.util.Scanner;
public class Max2 {
public static void main(String arg[]) {
Scanner scanner = new Scanner(System.in);
max m = new max();
int a = scanner.nextInt();
int b = scanner.nextInt();
m.max1(a,b);
}
}
第二种情况是:你的确是在同一个包中创建了还是不行,那估计是因为你的包里面还有别的很多class,相互影响了,试试新建一个工程,新建一个包,应该可以解决
19 public static void fun(Message temp){
20 temp.setNum (200) ;
21 }
自定义对象,传递参数时,是传“址”的 。。。。。。。。。。
16 fun(msg) ; 就是调用静态函数 fun、并传递参数msg————