要在java中调用c语言的库,需要使用Java提供了JNI。\x0d\x0a举例说明\x0d\x0a在c语言中定义一个voidsayHello()函数(打印HelloWorld)然后在Java中调用这个函数显示HelloWord.\x0d\x0a现在分别从Java和C语言两部分说明:\x0d\x0a1.Java部分\x0d\x0a首先定义一个HelloNative,在其中申明sayHello函数,函数要申明为Native类型的.如下:\x0d\x0apublicclassHelloNative{\x0d\x0apublicnativevoidsayHello()\x0d\x0a}\x0d\x0a\x0d\x0a编译这个类,生成class文件:\x0d\x0ajavacHelloWorld.java\x0d\x0a\x0d\x0a利用javah生成需要的h文件\x0d\x0ajavahHelloNative\x0d\x0a\x0d\x0a生成的h文件大概如下:\x0d\x0a\x0d\x0a/*DONOTEDITTHISFILE-itismachinegenerated*/\x0d\x0a#include\x0d\x0a/*HeaderforclassHelloNative*/\x0d\x0a\x0d\x0a#ifndef_Included_HelloNative\x0d\x0a#define_Included_HelloNative\x0d\x0a#ifdef__cplusplus\x0d\x0aextern"C"{\x0d\x0a#endif\x0d\x0a/*\x0d\x0a*Class:HelloNative\x0d\x0a*Method:sayHello\x0d\x0a*Signature:()V\x0d\x0a*/\x0d\x0aJNIEXPORTvoidJNICALLJava_HelloNative_sayHello\x0d\x0a(JNIEnv*,jobject)\x0d\x0a\x0d\x0a#ifdef__cplusplus\x0d\x0a}\x0d\x0a#endif\x0d\x0a#endif\x0d\x0a\x0d\x0a可以看一下上面自动生成的程序,程序include了jni.h,这个头文件在$JAVA_HOME下的include文件夹下.还可以发现生成的函数名是在之前的函数名前面加上了Java_HelloNative。\x0d\x0a2.C语言部分\x0d\x0a根据上面生成的h文件编写相应的代码实现,建立一个HelloNative.cpp用来实现显示HelloWorld的函数.如下:\x0d\x0a\x0d\x0a#include\x0d\x0a#include"HelloNative.h"\x0d\x0a\x0d\x0aJNIEXPORTvoidJNICALLJava_HelloNative_sayHello(JNIEnv*,jobject)\x0d\x0a{\x0d\x0aprintf("HelloWorld!\n")\x0d\x0a}\x0d\x0a\x0d\x0a代码编写完成之后,我们再用gcc编译成库文件,命令如下\x0d\x0agcc-fPIC-I/usr/lib/jvm/java-7-openjdk-i386/include-I/usr/lib/jvm/java-7-openjdk-i386/include/linux-shared-olibHelloNative.soHelloNative.cpp\x0d\x0a\x0d\x0a这样就会在当前目录下生成一个libHelloNative.so的库文件.这时需要的库已经生成,在C语言下的工作已经完成了.\x0d\x0a接下来需要在Java中编写一个程序测试一下.在程序前,需要将我们的库载入进去.载入的方法是调用Java的System.loadLibrary("HelloNative")\x0d\x0a\x0d\x0apublicclassTestNative\x0d\x0a{\x0d\x0astatic{\x0d\x0atry{\x0d\x0aSystem.loadLibrary("HelloNative")\x0d\x0a}\x0d\x0acatch(UnsatisfiedLinkErrore){\x0d\x0aSystem.out.println("Cannotloadhellolibrary:\n"+e.toString())\x0d\x0a}\x0d\x0a}\x0d\x0apublicstaticvoidmain(String[]args){\x0d\x0aHelloNativetest=newHelloNative()\x0d\x0atest.sayHello()\x0d\x0a}\x0d\x0a}\x0d\x0a\x0d\x0a但是再编译后,运行的时候,问题又出现了.\x0d\x0aCannotloadhellolibrary:\x0d\x0ajava.lang.UnsatisfiedLinkError:noHelloNativeinjava.library.path\x0d\x0aExceptioninthread"main"java.lang.UnsatisfiedLinkError:HelloNative.sayHello()V\x0d\x0aatHelloNative.sayHello(NativeMethod)\x0d\x0aatTestNative.main(TestNative.java:13)\x0d\x0a\x0d\x0a载入库失败,但是库明明就是放在当前文件夹下的,怎么会载入失败呢?\x0d\x0a用System.getProperty("java.library.path")查看,发现java.library.path中并不u存在当前的目录.主要有以下的几个解决办法:\x0d\x0a1)将生成的库复制到java.library.path有的路径中去,当然这样不是很好\x0d\x0a2)设置环境变量exportLD_LIBRARY_PATH=.:$LD_LIBRARY_PATH,将当前的目录加入到LD_LIBRARY_PATH中\x0d\x0a3)设置java的选项,将当前的目录加入到其中.java-Djava.library.path=.$LD_LIBRARY_PATH\x0d\x0a这样之后程序就能够成功的运行了.可以看见显示的"HelloWorld!"了你可以这样理解add(a,b)中向ab传值,在方法add中处理ab 然后得出一个数,例如sum = a+b;,然后这个方法就返回这个数,当然这个数的类型是你定义的。然后在某个地方你要用到这个sum,你就可以这样用 Sums = add(a,b);可以这样用,其实有返回类型的方法你可以认为它就是一个值来用就行了。\x0d\x0a\x0d\x0apublic static void main(String args[]){\x0d\x0aSystem.out.println("add(a,b)当a=1,b=2的时候,a+b的值为"+add(1,2))//有返回类型的方法可以直接看成是一个值\x0d\x0a\x0d\x0a}
JAVA如何调用C函数
给您推荐相同类型的内容:
常用的前端框架有哪些?
1. Twitter BootStrap (Apache v2.0;响应式)时髦、直观并且强大的前端框架,让Web开发变得更加容易。2. Foundation (MIT;响应式)最先进的响应式前端框架。3. 960gs(GPL&am在python中海龟库的英文
在python中海龟库的英文如下:turtle绘图的基础知识:1、画布(canvas)turtle.screensize(canvwidth=None, canvheight=None, bg=None) #参数分别为画布的宽(单位像素c支持命名空间吗
支持。命名空间在1995年被引入到c标准中,通常是这样定义的:命名空间定义了新的作用域。它们提供了一种避免名称冲突的方法。c中的命名空间通常用于避免命名冲突。尽管命名空间在最近的c代码中广泛使用,但大多数较旧代码都不使用此工具。特点说明我有一个网线想连接两台电脑、需要如何操作?
1、将两台电脑直接用网线相连。2、第一台电脑设置:打开设置面板。3、将ip地址和网关设为192.168.0.1目的是让这台电脑做另一台电脑的网关。子网掩码一点击自动添加。4、第二台电脑同样打开设置,如图所示:此处的ip地址最后点后的数可以是电脑键盘如何切换输入法
电脑键盘怎么切换中文输入法的操作:方法一、1.首先打开输入法,此时输入法为英文输入模式,在页面中可以直接输入英文字母2.然后按下键盘上的“shift”按键,进行切换输入法语言的操作3.在下图中即可看出,输入法已经从英文输入法切换为中文输入法怎么新建CSS规则呢?
在dreamweaver cc中可以直接创建css文件,或在内面内手写输入css代码定义规则等等。如果要使用可视化css编辑,可以使用css设计器,在默认的界面下,在软件窗口右侧的活动窗口内就可以找到css设计器。例如:新建一个html电脑如何截屏并保存桌面
电脑截屏保存到桌面方法如下:1、找到并点击键盘上的PrtScsysRq截图键,截取桌面整个区域。2、点击开始-所有程序-附件-画图,打开画图软件。3、点击界面左上角的粘贴按钮,截图出现在整个画图区域。4、截图粘贴好。5、点击界面左上角的保飞利浦css5235y环绕不响
以无线方式将扬声器连接至主装置。将无线环绕扬声器插入主装置,为电池充电。无线低音扬声器没有声飞利浦F5家庭影院主要由5个音箱组成,分别是1个无线低音炮,2个主音箱、以及2个环绕音箱组成。色调上这几台音箱都为黑色,表面覆盖了网罩,可以有效防止爱奇艺视频怎么下载到电脑
1、安装客户端后可以选择在网页或客户端任意一种方式下载。 2、如在网页上,在爱奇艺页面搜索要下载的`视频。 3、选择要下载的剧集。 4、点击右下角“下载”。 5、客户端下载也很方便,到视频所在页面,点击“下载”。 6、选择下载得剧集和存放路怎样用CSS去掉带超级链接图片的蓝色边框
<HTML><head><style type="textcss">img {border-width: 0px 0px 0px 0px} &am如何用r语言进行数据分类
R语言是用于统计分析、绘图的语言和操作环境。R语言是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。R是一套完整的数据处理、计算和制图软件系统。其功能包括:数据存储和处理系统;数组运算工具(其向量手机怎么控制电脑 手机远程控制电脑关机方法
手机控制电脑的具体步骤如下:我们需要准备的材料分别是:电脑、手机、TeamView软件。1、首先我们打开电脑和手机中的TeamView软件。2、然后我们在手机上点击输入电脑端TeamView页面中“允许远程控制”下方“您的ID”后面的数c语言处理文件里的大数据
C语言处理大数据一般有三种处理方法:1.分段处理,即无论文件多大,程序中使用的永远只是一小段部分,可以使用一个缓冲区,根据用户交互输入,分段的输出;2.使用内存文件映射,这是最常用的文件的处理方法,Linux和Windows都提供一c程序员和java程序员哪个好?哪个薪水更高?
越原始的语言越值钱。但是不能以一个语言来判断薪水的高低。大部分只拿一点薪水的程序员都是为了工作而工作,反而拿到高薪的人,都是真正喜欢编程的人。C适合通信开发,桌面应用开发,驱动硬件开发比较多。JAVA 目前主流应用于web开发。比如你在电信CSS中如何设置单词的间距?
letter-spacing:文字间隔word-spacing:字母间隔亦可以设置margin或者padding例如<li>足彩<li><li>高频<lcss中的角度,时间,频率这几种属性有什么用?
这些变量,将在CSS2中出现,现在还没有被普及啊!ANGLE用于定义给定的声音从哪个位置发出。主要是其调试的作用啊!是网页变的更加完善!TIME时间,主要是可以再网页上显示时间所用,这将是以后的一个趋向!frequency频率,是十分重要的用C语言:求10个随机偶数
先找一个随机函数。。网上很多。。然后和2求莫等于0。。保存进数组。。直到保存10为止int Rand()随机函数。一般以时间为随机种子产生随机数。{要取得[a,b)的随机整数,使用(rand() % (b-a))+ a (结果标准css文件开头怎么写?
*全局样式**{padding:0margin:0}div,dl,dt,dd,form,h1,h2,h3,h4,h5,h6,img,ol,ul,li,table,th,td,p,span,a{border:0}img,input{bor用css怎么设置div滚动条的样式,可改变大小的
在css设置可改变大小的div滚动条样式方法:1.首先新建html文档,进入代码书写界面。2.在<head>和<body>的里面写入代码,在<div>里面写入想要输多线程的java 程序如何编写?
Java 给多线程编程提供了内置的支持。 一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。新建状态:使用 new 关键字和 Thread 类或其子类建立一个线程对象后,该线程对象就处于新建CSS居中方案大全
如果您觉得我的文章有用,欢迎点赞和关注,也欢迎光临我的个人博客 https:github.comBokFang 在这里总结一下CSS水平居中、垂直居中的各种方式。应该说非常全了。总览一下: 用法:在父级元素的样式手机上怎么退出电脑上的微信登陆
工具原料:苹果6s手机,手机微信。1、首先在我们的手机桌面上找到微信并点击它。2、然后将主界面往下滑动。3、接着点击Windows微信已登录。4、然后找到退出windows微信并点击它。5、最后点击退出就可以了。通过以上操作,我们就用手R语言如何获取网站上的数据
首先打开r语言的命令行编辑窗口先以简单数据为例,在r命令行窗口输入如下代码:data_test<-data.frame(c1<-c(7,8,9,10,11,12),c2<-c(23,36,87,54,15请举例说明CSS听觉样式表的功能?
听觉样式表听觉样式表可把语音合成与音响效果相组合,使用户可以听到信息,而无需进行阅读。听觉呈现可用于:视觉能力低弱的人士帮助用户学习阅读帮助有阅读障碍的用户家庭娱乐在汽车中使用听觉呈现通常会把文档转化为纯文本,然后传给屏幕阅读器(可读出屏幕用电脑怎么格式化内存卡
1、将SD卡连接到计算机,然后不读取SD卡的内容。2、打开“我的电脑”。3、找到你的SD卡。4、右击鼠标,可以看到“格式化”的字样,点击即可。1、第一个方法就是利用手机内带的功能进行sd卡的格式化,进入设置,存储,然后里面一般都会有一个格div+css布局的基本流程
解决这个问题的方法如下:1、新建一个html文件,命名为test.html,用于讲解div+css布局的基本流程。2、在test.html文件内,对body进行样式初始化,设置外边距margin为0,内边距padding为0,同时使用te“div+css”清除格式的标签是什么?
当我们使用了css float浮动会产生css浮动,这个时候就需要清理清除浮动,我们就用clear样式属性即可实现:clear:bothx0dx0ax0dx0aclear 属性定义了元素的哪边上不允许出现浮动元素。在 CSS1css高度塌陷
在文档流中,父元素的高度默认是被子元素撑开的,也就是子元素多高,父元素就多高。但是当子元素设置浮动之后,子元素会完全脱离文档流,此时将会导致子元素无法撑起父元素的高度,导致父元素的高度塌陷。避免父元素高度塌陷的方法: 1.加一个空div标签printf函数的原型如何解释?
最后一个(在这个函数中是第二个)参数写成“...”意思是该函数能接收不定数量的参数,或者更普遍的说法是变长参数。以printf为例:printf("This is a %s and a %s", s1, s2)在这次调用小米6不能连接电脑不能充电没反应怎么办啊
1. 小米手机连接电脑充电没反应怎么办 可能原因如下:1、手机的USB选项不正确。尝试操作:在手机开机状态下,使用数据线将手机与计算机连接,在手机界面按住往下拉,选择“USB已连接”选项后并按打开“USB存储设备”,即可实现手机和P