我用C语音写了个程序,如何把它封装起来供Java调用?就是说如何在Java中调用C?或者说如何把自己写的C程序打包成jar供Java调用?
这个涉及到的知识叫做JNI; 我自己总结过两篇文章,你可以参考下。
https://blog.csdn.net/aizongjie/article/details/79267817
https://blog.csdn.net/aizongjie/article/details/79272308
java中如何调用c https://www.cnblogs.com/jaejaking/p/6840530.html
给你举个例子吧:计算二元函数的根
1、使用package语句将方程的属性即计算根的方法封转在一个有包的类中,包名是tom.jiafei,类的名字是SqareEquation。编写一个SunRise的主类,该主类使用import语句引入ton.jiafei包中的SquareEquation类。
这两个程序的代码:
SquareEquation.java(计算根的方法)
package tom.jiafei;
public class SquareEquation {
double a,b,c;
double root1,root2;
boolean boo;
public SquareEquation(double a,double b,double c) {
this.a=a;
this.b=b;
this.c=c;
if(a!=0)
boo=true;
else
boo=false;
}
public void getRoots() {
if(boo) {
System.out.println("是一元2次方程");
double disk=b*b-4*a*c;
if(disk>=0) {
root1=(-b+Math.sqrt(disk))/(2*a);
root2=(-b-Math.sqrt(disk))/(2*a);
System.out.printf("方程的根:%f,%f\n",root1,root2);
}
else {
System.out.printf("方程没有实根\n");
}
}
else {
System.out.println("不是一元2次方程");
}
}
public void setCoefficient(double a,double b,double c) {
this.a=a;
this.b=b;
this.c=c;
if(a!=0)
boo=true;
else
boo=false;
}
}
SunRise.java
import tom.jiafei.*;
public class SunRise {
public static void main(String args[]) {
SquareEquation equation=new SquareEquation(4,5,1);
equation.getRoots();
equation.setCoefficient(-3,4,5);
equation.getRoots();
}
}
2、写完了之后,在D或者F的盘中建立一个名为2000的文件夹,在这个文件夹里建立一个名为tom的文件夹,在tom的文件夹里在建立一个名为jiafei的文件夹。然后将SquareEquation.java放到F:2000\tom\jiafei,将SunRise.java放到F:2000之中。
3、打开命令提示符,将路径装换到F:2000\tom\jiafei之中,执行javac SquareEquation.java,然后转换到F:2000,执行javac SunRise.java,在执行 Java SunRise。便可以。
4、如下图所示
如若对您有帮助,请采纳!