`
高级java工程师
  • 浏览: 409371 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

jni初级(一)

阅读更多
1.jni 是java与c++提供的接口,这个接口可以使c++与java进行交互。
2.在开发之前必须掌握java与c++技术。
3.使用开发工具 jdk  myeclipse   visual.

本地代码实现
1.写一个java类,使用jdk编译成.class文件,命令如下 :javac  XX.java.
2.将.calss文件编译成.h文件   命令如下:javah XX类名 (在jdk中bin目录中 javah可以将java生成c++).

3.将.h文件放入c++工程中。
4.jni.h和jni_md.h文件,这2个文件在java的jdk中,include包中win32中。因为在程序中要调用,所以必须引入,如果报错就是你没有正确引入的原因。

5.java生成的.h文件引入c工程的头文件,在源文件中创建c++文件即可。


source.cpp
/* DO NOT EDIT THIS FILE - it is machine generated */
#include "..\jni.h"
/* Header for class TestNative */
/*注意:这里是引入文件,就是导包*/

#ifndef _Included_TestNative
#define _Included_TestNative
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     TestNative
 * Method:    sayHello
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_TestNative_sayHello
  (JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif

class source
{
public:
	source(void);
	~source(void);
};


TestNative.h

/* DO NOT EDIT THIS FILE - it is machine generated */
#include "..\jni.h"
/* Header for class TestNative */
/*注意:这里记得引入文件*/

#ifndef _Included_TestNative
#define _Included_TestNative
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     TestNative
 * Method:    sayHello
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_TestNative_sayHello
  (JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif

class source
{
public:
	source(void);
	~source(void);
};


TestNative.java
public class TestNative {
	
	public  native void  sayHello();

	public static void main(String [] args){
         //调用本地文件库“nativeCode”
	System.loadLibrary("nativeCode");
                  //创建对象
		TestNative t = new TestNative();
                  //调用sayHello();方法,做个动作。
		t. sayHello();	
		
	}
}

查看c++文件库,进入debug包中,可以看到生成的NativeCode.dll文件。
将c++项目中得debug路径放入path中,这样修改文件时就能动态调试。
使用javac 命令再次调用 java的.class文件,这时候可以发现结果:c++中的HelloWorld就能正确的在java中输出。(参考附件图5)


大家注意一点: native 是声明与c++交互的一个标志,sayHello();是一个方法。

附件有参考图片,只供参考,如有问题,请留言。
  • 大小: 190.5 KB
  • 大小: 37.1 KB
  • 大小: 21.9 KB
  • 大小: 46.3 KB
  • 大小: 43.4 KB
分享到:
评论

相关推荐

    Android之JNI初级篇

    总之,"Android之JNI初级篇"这篇文章应该是为开发者提供了一个全面的入门教程,帮助他们了解并掌握在Android应用中使用JNI的基本步骤和技术要点。通过学习这篇文章,开发者可以学会如何利用JNI提高应用的性能,实现...

    JNI 入门初级教程

    ### JNI入门初级教程知识点概述 本教程旨在为初学者提供JNI(Java Native Interface)的基础知识与实践指导。JNI是Java平台的一部分,它允许Java代码与其他语言编写的代码进行交互,尤其是C和C++。这对于利用现有C...

    JNI学习资料(包括JAVA初级教程 j-jni.zip JNI.pdf jni(1).pdf )

    自己收集的JNI学习资料(包括JAVA初级教程 j-jni.zip JNI.pdf jni(1).pdf ), 个人认为内容很全,尤其是j-jni.zip 里面是IBM的在线教程,非常实用,理论例子都很全,是JNI学习的入门帮手.

    传智播客_Andorid_JNI视频_day01视频

    "传智播客_Andorid_JNI视频_day01视频"很可能是对这一主题的初级教程,旨在帮助开发者入门JNI编程。 JNI的核心是提供了一种方式,让Java代码能够声明和调用本地方法,这些方法由非Java语言(如C、C++)实现。这涉及...

    java高级 初级 中级 教程

    本教程涵盖了从初级到中级再到高级的全面Java学习路径,旨在帮助开发者逐步掌握这一强大语言的核心概念和技术。 首先,对于初级Java学习者,我们需要从基础语法开始。Java是一种面向对象的语言,它的基础包括数据...

    JAVA初级基础PPT

    12. **JNI(Java Native Interface)**:了解Java与本地代码交互的方法,允许Java调用C/C++函数。 13. **Java Applet和Swing**:虽然现代Java开发更多地转向JavaFX或Web应用程序,但仍然会介绍Applet的基本概念和...

    NDKDemo入门

    这个"NDKDemo入门"就是针对Android NDK的初级实践,旨在介绍如何调用C语言实现的代码,通过JNI(Java Native Interface)与Java层进行通信。 首先,我们需要了解JNI。JNI是Java平台的标准接口,它允许Java代码和...

    javase培训教程(初级慧桥)

    - 2000年5月8日,JDK 1.3发布,引入了对DNS的支持、JNI(Java Native Interface)和XML技术的支持。 - 2002年2月13日,JDK 1.4发布,标志着Java技术逐渐成熟,此时可以广泛应用于各种应用场景。 - **壮年期**: -...

    java初级教程

    Java初级教程旨在帮助初学者掌握Java编程语言的基础概念和核心语法。Java是一种广泛使用的面向对象的编程语言,具有跨平台、高性能和强大的安全特性。在本教程中,我们将深入探讨以下几个关键知识点: 1. **Java...

    Java 本地接口规范

    综上所述,Java本地接口规范(JNI)是Java生态系统中的一个关键组成部分,它不仅连接了Java世界与本地代码的世界,还为Java开发者提供了强大的工具箱,使他们能够在各种应用场景下发挥Java的优势。通过深入理解JNI的...

    一个简单的Java虚拟机实现(v032)

    总结来说,“一个简单的Java虚拟机实现(v032)”是一个C++编写的初级JVM示例,旨在帮助初学者了解Java虚拟机的基本工作流程。虽然它可能不包含完整的JVM特性,但对于学习JVM的内部机制和字节码执行过程而言,是一个...

    Java典型应用彻查1000例第一卷:Java入门(源码.PPT.习题)

    高级部分涉及并发编程、反射、JNI(Java Native Interface)以及更复杂的设计模式。 《Java编程思想第四版完整中文高清版》是Java经典教材,作者Bruce Eckel详尽地阐述了Java语言的核心概念和技术。书中通过大量...

    精品专题(2021-2022年收藏)java软件高级工程师jEE方向linux初级开发工程师jEE方向简历模板.doc

    - 使用技术:Java、Oracle数据库、SSH框架、Ajax、JFreeChart、JNI - 功能:员工信息管理、房间餐饮管理、预定登记、消费结账、权限分配、论坛通知等 - 特点:个人独立完成,得到好评,采用B/S架构,Web服务器为...

    高级软件工程师面试题

    - **外观模式**:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 #### 三、网络协议与系统架构 在现代软件开发中,理解和应用网络协议及系统架构原理...

    老罗android开发视频教程全集百度网盘下载

    Android进阶初级:组件Widget/ 菜单Menu/ 布局Layout 详解 Xml解析(Pull/Dom/Sax)/JNI 解析SQL数据库原理, SQLit e /SharedPreferences/File详解 多媒体Audio/Video/Camera 详解 Android进阶高级:蓝牙/WIFI SMS/...

    关于一个项目和技术综合关于高级教程

    JNI(Java Native Interface)是Java平台提供的一种机制,允许Java代码与其他编程语言(如C++)编写的功能进行交互。通过JNI,开发者可以利用C++的高性能特性来编写Java程序中的某些模块,例如底层系统调用或者优化...

    初级java笔试题-ilu:XEROXPARC的跨语言统一(ILU)的分支。另见:http://www2.parc.com/istl/proj

    总的来说,这个话题涵盖了初级Java开发者需要掌握的基础知识,以及对跨语言互操作性的高级理解,特别是通过ILU这一特定框架。学习这些内容有助于开发者提升技能,适应多元化的开发环境,同时也为他们提供了参与开源...

    史上最强NDK入门项目实战.rar

    【标题解析】:“史上最强NDK入门项目实战.rar”这个标题暗示了这是一个关于NDK(Native Development Kit)的初级教程项目,目标是帮助初学者掌握Android应用中的原生代码开发。NDK是Android开发中的一部分,它允许...

    蓝桥杯第三届JAVA软件开发高职高专组个人赛选拔赛真题

    虽然不是初级开发者常用的技术,但在特定场景下,了解JNI的原理和使用方法是必要的。 8. **Swing或JavaFX**:这两者是JAVA的图形用户界面(GUI)库,用于创建桌面应用程序。理解组件的布局管理、事件处理和对话框等...

Global site tag (gtag.js) - Google Analytics