如何在Java中调用C?或者说如何把自己写的C程序打包成jar供Java调用? 40C

我用C语音写了个程序,如何把它封装起来供Java调用?就是说如何在Java中调用C?或者说如何把自己写的C程序打包成jar供Java调用?

3个回答

这个涉及到的知识叫做JNI; 我自己总结过两篇文章,你可以参考下。

https://blog.csdn.net/aizongjie/article/details/79267817

https://blog.csdn.net/aizongjie/article/details/79272308

qq_33108245
丷温眸丶 我是用VS2013编译的,没有class文件该怎么办
接近 2 年之前 回复
hu_belif
huwao 大神啊,向您学习。
接近 2 年之前 回复

给你举个例子吧:计算二元函数的根
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、如下图所示
图片说明

如若对您有帮助,请采纳!

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐