
正文
javajni代码,java 代码
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
JNI编程之如何传递参数(一)——String参数的传递
1、/* string refer 在传递参数的时候,如果参数是string类型,可以用string类型的引用,减少内存的拷贝。
2、在这里,String 类型的传递是引用传递,也即是地址传递。这个是毋庸置疑的。因为在java里,String是对象类型,作为参数肯定是引用传递。
3、在形参表中以符号“&”开始的参数即为引用参数。如果一个形参是引用参数,调用部位将把实参的地址传递给子程序。子程序可以改变传递给引用参数的任何实参,因为子程序操作的是真正的变量,而不是它的副本。
相关问答
Q1: 请教有个简单的java程序,调用jni的动态库,当
第一步:首先我们来看下我们的工程的目录jni目录是我们生成库的文件,里面包含了一个.mk编译文件以及一系列的.c文件libs目录是我们编译jni目录下的mk文件动态生成的。
jni 是由Java调用C/C++的动态链接库 (DLL)。所以把.class--.h--dll ,想法是不正确的,同时也违背了Jni的初衷。Dll是由C/C++生成的。以前的一个项目用到了Java调用C/C++的DLL,所以对这个还算熟悉。
JNIEXPORT jint JNICALL Java_testdll_get (JNIEnv *, jclass); 和 JNIEXPORT void JNICALL Java_testdll_set (JNIEnv *, jclass, jint);这里JNIEXPORT和JNICALL都是JNI的关键字,表示此函数是要被JNI调用的。
总体说明:实现一个函数,传入整形数i,返回值i*i,这个函数做在DLL中,java将通过JNI调用这个函数,传入一个参数,得到返回值。确定DLL的名称为calldll.dll,函数shanfei(int i)。
public native double sqrt(double params);static{ //调用动态链接库 System.loadLibrary(compute);} } 2)编译成字节代码 在这个过程中,由于采用了native关键字声明,Java编译器会忽视没有代码体的JNI方法部分。
Q2: 如何在linux下创建一个简单的JNI程序HelloWorld
在当前目录生成libHelloWorld.so。注意一定需要包含Java的include目录(请根据自己系统环境设定),因为Helloworld.c中包含了jni.h。
用javah -jni为函数生成一个在java调用和实际的c函数之间的转换存根,该存根通过从虚拟机栈中取出参数信息,并将其传递给已编译的C函数来实现转换。
点击确定即可,创建出一个helloworld.c的小程序,然后我们就可以编写我们的Hello World小程序了。
Q3: 如何在c++中调用java代码
C语言调用Java,还有Java调用C,都使用到JNI技术,C语言调用需要创建Java虚拟机,可查看函数JNI_CreateJavaVM、DestroyJavaVM的资料,函数声明在jni.h头文件(JDK)中。
JNIEnv类型代表Java环境。通过这个JNIEnv*指针,就可以对Java端的代码进行操作。如,创建Java类得对象,调用Java对象的方法,获取Java对象的属性等。
据我所知,并不能在C/C++中调用JAVA,这是两门语言,C++只是因为与C关系密切 所以才可以使用C的一些东西,但是和JAVA的差别就太大了,类,继承,虚继承,接口,派生类等等...都不一样,所以说 换个思路吧。
如果命令行可以解决的问题,都不算问题。比如你可以在c语言中调用system(java -jar xxx.jar)当然,这种方法很坑爹。需要用文件或者网络来实现数据的传输和交换的介质。
(1)编写HelloWorld程序,由于涉及到要编写c/c++代*因此会在开发中使用Microsoft VC++工具。编写java代*,在硬盘上建立一个hello目录作为的工作目录,首先需要编写自己的java代*,在java代*中会声明native方法,代*非常简单。
Q4: 用jni在代码中怎样实现java层调c的源码
可以看一下上面自动生成的程序,程序include了jni.h,这个头文件在 $JAVA_HOME下的include文件夹下. 还可以发现生成的函数名是在之前的函数名前面加上了Java_HelloNative。
首先创建Java文件 HelloJni.java ,并创建native方法。编译Java文件并生成java头文件。创建C语言文件,HelloWorld.c。生成动态链接库文件 libhello.so。设置动态链接库文件的目录。
方法不包括实现,因为我们要用c/c++语言实现它。
第一,jni方式调用c接口。通过将c语言接口封装为jni的方式直接供java语言调用,这个可以说是最惯用的方式。第二,jna方式调用c接口。jna也是其中一种调用c接口的方式。使用时可以加载动态库.dll或.so,然后调用库中的接口。
Q5: Java进阶:Java通过JNI与Delphi交互
1、你可以用delphi来和设备通讯(一般是COM口),用JNI传递结果给java,或者用数据库做中介也可以。
2、java不可以直接使用ocx的,可以通过jni进行二次包装。
3、……别,C++那个结构体中string都出来了。基本上是不用指望其他语言可以调用了。
4、JAVA通过JNI调用本地方法,而本地方法是以库文件的形式存放的(在WINDOWS平台上是DLL文件形式,在UNIX机器上是SO文件形式)。通过调用本地的库文件的内部方法,使JAVA可以实现和本地机器的紧密联系,调用系统级的各接口方法。
5、JNI是Java Native Interface的缩写,中文为JAVA本地调用。从Java 1 开始,Java Native Interface (JNI)标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。
6、使用JNI技术,可以将Java代码编译成动态链接库(.so或.dll),然后在C语言中通过调用动态链接库来调用Java代码。需要注意的是,在使用JNI技术时,需要遵守一定的规范和约定,以确保Java代码和C语言代码可以正确地交互。
关于javajni代码和java 代码的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

