JNI技术实现(HelloWord)

JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++)。

下面我来讲讲技术的实现

(1)在Visual C++ 6.0工具下新建一个Win32 Dynamic-Link Libreay工程,并创建空的DLL工程

(2)写一段java代码

public class HelloWord {
	private  native void hello();   //主要是需要这个声明
	public static void main(String[] args) {
	}
}

(3)然后打开cmd,编译java生成的class文件得到HelloWord.h

(2)然后在此工程的位置中放入以下三个文件:jni.h
(jdk目录下的include文件夹中)  jni_md.h  (jdk目录下的include文件夹下的WIN32中)  HelloWord.h

(3)然后

右键HeaderFiles添加文件到目录-〉选择上面步骤中的第三个文件,然后将HelloWord.h中#include<jni.h>改成#include"jni.h"

(4)然后右键SourceFiles新建一个C++SourceFiles文件,文件中实现所声明的方法

#include"HelloWord.h"     //
#include<stdio.h>
JNIEXPORT void JNICALL Java_HelloWord_hello       //实现
(JNIEnv *, jobject){
	printf("hehe");
}

(5)运行它,编译通过后,找到此文件路径下的Debug文件夹中的h.dll(根据你创建时所生成的名字),复制到eclipe工程

(6)java就可以打印出用c++编译的helloworld了

public class HelloWord {
	private  native void hello();
	public static void main(String[] args) {
		System.loadLibrary("H");
		HelloWord h=new HelloWord();
		h.hello();
	}
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-07-30 10:12:35

JNI技术实现(HelloWord)的相关文章

JNI技术基础(2)——从零开始编写JNI代码

书接上文: <JNI技术基础(1)——从零开始编写JNI代码> 2.编译源程序HelloWorld.java并生成HelloWorld.class 3.生成头文件HelloWorld.h 在Linux控制台输入命令:javah –jni HelloWorld 生成HelloWorld.h头文件 //HelloWorld.h /* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header

Java通过jni技术支持c、c++调用使用整理

最近在公司搞终端5.0,说要对c++版本sdk封装一个java版的sdk,可是团队没有搞java的,于是赶鸭子上架,临时学习几天,整了一下:感觉还挺有意思的,于是整理一下: 为什么要使用java支持对c.c++的调用? 众所周知Java语言是一门支持跨平台解释型语言:#.java通过javac编译生成生成#.class字节码,运行过程依赖java虚拟机执行字节码生成虚拟机的执行指令,最终通过虚拟机操控所在平台,完成其设计的功能:其优点很明显,支持跨平台:其缺点也很明显,执行效率底,并且不支持平台

c++实现加密和解密算法以及JNI技术的应用实例

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86

使用jni技术进行android应用签名信息核查及敏感信息保护

最近业余时间写了一款应用<摇啊摇>,安智.安卓.360等几个应用商店已经陆续审核通过并上线.从有想法到最终将产品做出来并发布,断断续续花了近二个半月的业余时间,总体来讲还算顺利,虽然期间也遇到几个小技术难点,最后解决的还算满意.今天说下其中一个小技术难点,现在想想这个小技术难点也很平常,但还是分享出来,希望对有相同疑惑的同学有帮助. 因为java语言自身特性的原因,导致android程序很容易被反编译,虽然可以采用代码混淆的方式,但是如果用了第三方库,混淆脚步编写不好,代码混淆后又会出现程序运

11.Cocos2dx2.2下使用JNI技术调用jar包里面的一些方法遇到的一些问题及解决方案。

<span style="font-family: Arial, Helvetica, sans-serif;">步骤一:导入JniHelper.h头文件.</span> #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) #include "JniHelper.h" #endif: 此时会遇到JniHelper.h头文件无法找到的问题,需要添加附加包含目录即可解决问题.具体操作步骤如下:右击项目-

cygwin+ndk+eclipse下JNI技术入门

1.JNI的编写步骤1)编写带有native 声明的java类.2)编译java文件成class类3)使用javah -jni com.ikags.project.XXXX 编译成.h文件4)使用C/C++编写代码5)编写makefile文件,将.h和.c(.cpp)文件编译成.dll(.so)文件6)将.dll(.so)文件提供给项目,用system.loadLibrary方法调用. 2.编写makefile文件make执行时,自动寻找Makefile(makefile)文件,然后执行编译工作

JNI技术

1. JNI 介绍 Java Native Interface(JNI)是Java语言的本地编程接口,是J2SDK的一部分. 在java程序中,我们可以通过JNI实现一些用java语言不便实现的功能.通常有以下几种情况我们需要使用JNI来实现. (没有,有,速度) 标准的java类库没有提供你的应用程序所需要的功能,通常这些功能是平台相关的 你希望使用一些已经有的类库或者应用程序,而他们并非用java语言编写的 程序的某些部分对速度要求比较苛刻,你选择用汇编或者c语言来实现并在java语言中调用

Cocos2dx下使用JNI技术调用jar包里面的一些方法遇到的一些问题及解决方案

情况一:JniHelper.h头文件无法找到 方法:需要添加附加包含目录即可解决问题.具体操作步骤如下:右击项目---->c/c++---->常规---->附加包含目录---->添加JniHelper.h所在的路径即可.此时可能还会遇到找不到jni.h和jni_md.h的问题,解决方案为在%JAVA_HOME%/include/下找到 jni.h,在%JAVA_HOME%/include/win32/下找到jni_md.h,复制到"Visual Studio目录/VC/i

JNI技术初探(二)

package com.zzw.demo1; public class Hello { static { System.loadLibrary("hello"); } private native String say(String str); private native float average(int[] a); private native int max(int[][] f); public static void main(String[] args) { Hello h