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

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

0

3个回答

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

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

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

1
qq_33108245
丷温眸丶 我是用VS2013编译的,没有class文件该怎么办
12 个月之前 回复
hu_belif
hu_beliefs 大神啊,向您学习。
12 个月之前 回复

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

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

1
0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
将一个程序完整打成jar包供另外一个程序使用
上面所说的这个方法很累人,不可取。其实Android在设计的时候早就为我们考虑到这一点了,这个在Android中叫做库项目,sdk中的example中就有现成的例子,今天我们就来用两个示例来做这个效果。教程见:http://www.ourunix.org/android/post/129.html
JNI开发(一) 简单的C代码打包成SO库以及项目如何调用SO库
前段时间开发过程中用到了简单的JNI使用,当时发现很多网上文章总有这样那样的问题,最近趁时间充裕就记录下来,以供记忆和交流。JNI环境配置这里就不做多讲,百度一下,把脚跨过墙就好。写一个简单的SO库先在项目中创建一个类,里面暴露出本地代码的接口。随后使用Terminal 执行生成.h的命令,将目录先定位到java目录,再执行 javah -jni com.monke.simplejnidemo.S
Error:Execution failed for task ':app:transformClassesWithDexForDebug'
3个错误non-zero exit value 1; non-zero exit value 2; non-zero exit value 3 Error:Execution failed for task ':app:transformClassesWithDexForDebug'. > com.Android.build.api.transform.Transfor
Eclipse中如何把自己写的方法封装成jar包供其他项目使用
Eclipse中如何把自己写的方法封装成jar包供其他项目使用 1.第一步。首先自己写一个方法: 2.右键项目名称(Demo)—>选择Export…—>选择JAR file,然后选择下一步。 3.勾选自己需要的,选择jar包生成的位置,并点击Finish. 4.最后在另外的项目中正常引用此jar包即可。 ...
用SpringBoot提供一个jar包给别人调用
提供的jar包只包含自己写的逻辑,在提供的jar包中所依赖的其他j的ar包并不打包在自己写的jar包内,而是由jar包使用者将提供jar包的依赖包一并导入。 测试demo包括jar包提供项目ProvideMyJar 和jar包使用项目ProvideMyJarTest 其中在ProvideMyJar代码编写的时候依赖包全部导入,但是最后不打包,由ProvideMyJarTest最后导入 Provid...
Python打包成库供别的模块调用
1.创建python项目bricewulib 2.新建test_package包并创建log类以及get_log方法
将c++函数打包成动态库 在c文件里使用
在c++调用c 的代码 可以通过以下方式:#ifdef _cplusplus extern "c"{ #endif //c.....代码 #ifdef _cplusplus } #endif在 c 程序 中调用  c++的函数  : 使用的是 动态链接库的方法这里简单的写个函数:test.cpp#ifdef _cplusplus extern "c"{ #endif int summ(i...
android 将module打包成jar文件供其他工程使用
GitHub地址:https://github.com/linliangliang/TestHttp module可以打包成jar文件和aar文件, .jar:只包含了class文件与清单文件,不包含资源文件,如图片等所有res中的文件。 .aar:包含所有资源,class以及res资源文件全部包含。 我们下面只介绍导出jar文件。 如图:app module是主modul,用来测试...
如何将自己写的项目打成jar包,再引用到其他项目中
首先需要自己做一个项目,本文是操作数据库的项目Jdbcutil2,主要包括对数据库中数据的增删改查操作,来看一下: Colume: package com.xintouyun.annotation; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.la...
使用Android studio 构建自己的so,然后将项目打包成jar,提供so和jar给另一个项目使用
1.项目需要对数据加密,需要用jni这种方式更安全,需要将加解密放入so中 2.Android studio 的ndk开发方式,将项目引入jni,编译后在build->intermediates->cmake->debug->obj下生成so包 3.修改项目gradle文件 'com.android.library',重新编译项目,自动生成jar,编写task,将生成的jar重新命名 4.将
C++打包DLL在C#中调用
该部分介绍了C++打包成dll文件供C#调用的详细方法。如有问题欢迎大家批评指正,希望能够和大家一起学习,共同进步。
使用jython将python的py文件打包成java的jar包
Jython是一种完整的语言,而不是一个Java翻译器或仅仅是一个Python编译器,它是一个Python语言在Java中的完全实现。Jython也有很多从CPython中继承的模块库。最有趣的事情是Jython不像CPython或其他任何高级语言,它提供了对其实现语言的一切存取。所以Jython不仅给你提供了Python的库,同时也提供了所有的Java类。这使其有一个巨大的资源库。 我们使用的...
Java中使用Matlab打包的JAR包程序
    之前做脉搏采集时需要对数据进行滤波等处理,但是用Java处理显然没有直接用matlab的函数来得简单,下面是具体过程:1、在matlab中写好一个根据数据文件计算心率的函数:function HeartRate = purehr(fileName,total_time) fileData = load(fileName); %读取脉搏数据数据txt文件 values = fileDa...
将c++静态库实现二次封装供java调用
JNI是Java Native Interface的缩写,中文为JAVA本地调用。使用JNI可以很方便的用我们的Java程序调用C/C++程序
超详尽--m文件打包成j的jar包java调用教程
一、准备两个文件1、.m文件打成的jar包.m文件打成jar包后会出现上述的文件,在for_redistribution_files_only文件夹下有个.jar文件,我的文件2、因为是matlab打包的jar包,需要依赖matlab中的相关函数,所以要将javabuilder.jar包带上,路径:D:\Program_software\MATLAB_R2014a\toolbox\javabuil...
Java - Maven项目打包成jar给第三方使用(带依赖打包)
打包成jar 引入这个jar 安装到本地仓库 直接指定jar包的位置由于我们写项目的时候,有的时候并不是一个独立项目,而是作为一个第三方类库来提供服务的存在,用来给别的项目引入作为某个功能的封装。打包成jar解决方案主要是从pom.xml来入手,因为是maven项目,所以在pom里面加入build的参数,然后就可以了。 <build> <plugins>
Android——JNI项目使用Cmake打包生成.so库和jar包
         最近项目中需要将当前开发的JNI项目封装成SDK的形式供第三方app调用,而且我当前项目还引用了外部静态库。大家都知道java的代码可以以Module的形式打包成jar包,而jni中C或C++的代码可以输出so动态库,那么这俩如何结合起来也是个问题。看了很多文章,因为了解不多,以为这个是很复杂的事情,自己研究了一下才发现还是挺简单的。         一、首先项目是要把项目转换为...
Matlab如何打包成jar并给java使用(混合编程)
Matlab如何打包成jar并给java使用
把Java程序打包成jar文件包并执行
把Java程序打包成jar文件包并执行   1、首先要确认自己写的程序有没有报错。 2、第一次我写的是Web Project到现在,我一直没有执行成功,所以最好创建的是java Project 打包步骤: 1.在项目上,右键,选择Export。   2.进入到下图界面,选择Java 下面的JAR file     3.选择项目,确认必要的文件是否选中,选择保存jar文件包的路径
maven项目打包成jar包供别的maven项目使用
   &amp;lt;modelVersion&amp;gt;4.0.0&amp;lt;/modelVersion&amp;gt;    &amp;lt;groupId&amp;gt;com.maven&amp;lt;/groupId&amp;gt;    &amp;lt;artifactId&amp;gt;files&amp;lt;/artifactId&amp;gt;    &amp;lt;version&amp;gt;0.0.1-SNAPSHOT&amp;lt;/version&amp;gt;    
关于JAVA小程序完整打包过程
距离写完那个小程序已经过去快半个月了,期间发生了很多有趣的问题,一直没有来得及记录,正好这几天闲的有些无聊,一点一点回忆然后来做一份记录给大家留点小经验, 1、JAVA小程序如何打包 我这里拿一个比较简单的例子给大家做演示,首先右键你的项目选择export 点击FINISH后会出现如果出现错误 可以点击上面工具栏pr
java调用c,封装成dll
1)首先要有一个HelloWorld.java。 这个是主文件,里面包括本地方法的java声明,一个main函数,还有一个静态代码段,用来导入所需要的动态连接库(在windows里是.dll)。 代码如下: //HelloWorld.java class HelloWorld {     public native void displayHelloWorld();//注意关键字nati
maven初学:用maven将工程打包,maven项目引用jar包
写这篇文章纯粹是为了方便自己更好的理解一下maven,希望能帮助刚刚认识maven的人 1.如何用maven将自己的项目打成jar包,供别的项目用。 第一步:新建JavaProject 步骤太简单,略过了。 第二步:将工程中自动生成的src删掉,并且新建source folder  第三步:创建包 第四步:创建类,在类中创建一个简单方法(放在jar里面供调用的)
Java中如何将包中工具类进行打包导出做成jar文件
1.选择一个要进行打包的java文件2.右键单击—>export3.选择Java—>JAR file 点击next4.选择需要打包的文件,写好jar文件的名字,和导出路径,点击finish完成
java程序在Eclipse打包成jar程序并在机器中用bat运行
以下方法都参考了几篇文章,经过摸索后记录下来 1.java程序在Eclipse打包成jar (1)首先点击左上角File,然后点击 export 导出,此处不好截图,见谅 (2)点击Runnable JAR file (3)选择Java程序的主类和要保存的位置,然后点击finish,然后保存成功 2 运行ja
如何使用matalb中的deploytool函数打包jar包嵌入eclipse供java程序调用
确保你的操作系统jdk版本与matlab中的jdk版本一致;系统查看jdk版本:cmd运行java -version。matlab查看jdk版本:version -java。注意空格!我使用的是matalbR2016a,首先使用管理员身份运行matlab。注意,若非管理员运行可能打包失败!在matlab中输入函数deploytool,选择如下图: 点击Library Compiler,如下图操作
Java程序压缩成jar包,并在Linux后台执行
将Java引用程序打包成JAR文件常见的两种方法:jar命令打包 和 利用Eclipse直接打包。 先说第一种,在安装了JDK的前提下,直接在cmd或者linux终端打包jar包: 例子: 对/home目录下的test文件夹进行打包: 命令: jar cvf  test.jar  test (cvf是参数,V显示打包过程) 查看test.jar包的详细内容: 命令:jar tvf  t
制作SpringBoot的jar给其他项目使用
说明 最近在学着制作自定义的springboot-starter,发现Springboot使用maven打包的jar在其他项目中使用时会出现包名报红,无法导入使用编写的类的错误,在这记录一下 快速开始 1. 剔除不需要的文件:如Application和ApplicationTests 2.打包 不能使用springboot自带打包: &amp;lt;build&amp;gt; &amp;lt;plug...
matlab程序打包成jar包,IDEA实现java调用matlab程序
本文将分为三部分展开,有matlab程序打包成jar包,添加jar包到IDEA并调用,遇到的错误解决办法说明。 一. matlab程序打包成jar包 1.环境说明 系统:window7 64位 jdk1.7 matlab版本:matlab2016a 64位 jdk1.7 注意:必须要保证matlab的位数和jdk版本与系统一致(大版本一致即可,如都是1.7或1.6,后面的数字可以不一样) 2.环...
java打包成jar|执行jar包中的main方法
java打包成jarjar -cvf [jar包的名字] [需要打包的文件]执行jar包中的main方法java -jar **.jar 执行后总是运行指定的主方法,如果 jar 中有多个 main 方法,那么如何运行指定的 main 方法呢? 用下面的命令试试看:java -classpath *.jar *.**.className [args]“*.*”表示“包名”; “classNam
Python打包Java项目脚本(二):调用第三方jar包
项目生成之前的结构图。 . ├── WebContent │ ├── META-INF │ │ └── MANIFEST.MF │ ├── WEB-INF │ │ ├── classes │ │ ├── lib │ │ └── web.xml │ └── index.jsp ├── makefile.py └── src └── com ...
Jmeter调用自己写的jar包
新建java项目 导出JAR包,此处的package org.na为包名,deletedir为类名。导出后把jar包导入安装jmeter里的lib\ext目录下重新启动jmeterJmeter导入jar包,路径选择为:安装jmeter里的lib\ext\***.jar添加线程和BeanShell PreProcessor,编写测试代码: importorg.na.*;Strings=”测试数据”;...
C++ 通过jni生成库供JAVA调用(下)--C++生成库并JAVA可以调用(windows)
C++ 通过jni生成库供JAVA调用(下)–C++生成库并JAVA可以调用(windows)项目上 JAVA通过C++库去调用硬件设备,需要用C++封装库,然后JAVA调用C++的库,这里描述JAVA调用C++库的过程。 这里实现C++生成库可让JAVA通过JNI去调用 编译环境:VS2015; eclipse/(使用命令行也操作可行,eclipse不熟悉,然后开始没有使用它) 语言:
Java调用python生成jar包之后运行不起来
  在使用Runtime.getRuntime().exec()实现Java调用python脚本时,原本可以成功运行的项目,在打包成jar包之后运行出错。 解决方案:将项目中所有涉及到路径的地方更换为绝对路径。 ...
工程打成jar包供第三方调用示例
工程打成jar包供第三方调用示例
Android Studio 打包 Jar (将自己的 项目/自定义View 打包成jar)
一、常见的几种打包SDK的方式 1.直接以Library Module的方式引入 优点:简单方便,直接把模块抠出来放进一个Library中扔给第三方公司用就行了 缺点:只能适合于Android Studio开发的项目 2.以aar包的方式引入 优点:生成简单,Android Studio的项目在编译完成后,Library Module 的build目录中会自动生成 aar包,不...
如何使用Eclipse将Java工程打包成Jar包,并用bat文件启动Jar包
一、用Eclipse将Java工程打包成Jar包 step1 step2 step3 二、用bat文件启动Jar包 step4 step5 step6 一、用Eclipse将Java工程打包成Jar包 step1 在Eclipse中右键你要打包的工程,点击”Export…”,Export的功能就是将Java工程导出。 step2 点击Expo...
学习笔记:linux下java 程序打包成jar简单hello world
1. linux必须已安装java环境,测试   #javac -version javac 1.8.0_20 说明java环境已安装好了 2. 建立目录helloworld,在目录下建立helloworld.java文件 #cd ~ ~# mkdir helloworld ~# cd helloworld ~/helloworld# vi helloworld.javahellowor
如何将java工程转为jar,供其他项目使用
工具使用eclipse 1、右键选择工程、选择export 2、选择java --》 JAR file 3、选择存储的路径 如图:
生成so库供Java调用
c文件编译成so库供java调用,也就是JNI.