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的基本步骤和技术要点。通过学习这篇文章,开发者可以学会如何利用JNI提高应用的性能,实现...
### JNI入门初级教程知识点概述 本教程旨在为初学者提供JNI(Java Native Interface)的基础知识与实践指导。JNI是Java平台的一部分,它允许Java代码与其他语言编写的代码进行交互,尤其是C和C++。这对于利用现有C...
自己收集的JNI学习资料(包括JAVA初级教程 j-jni.zip JNI.pdf jni(1).pdf ), 个人认为内容很全,尤其是j-jni.zip 里面是IBM的在线教程,非常实用,理论例子都很全,是JNI学习的入门帮手.
"传智播客_Andorid_JNI视频_day01视频"很可能是对这一主题的初级教程,旨在帮助开发者入门JNI编程。 JNI的核心是提供了一种方式,让Java代码能够声明和调用本地方法,这些方法由非Java语言(如C、C++)实现。这涉及...
本教程涵盖了从初级到中级再到高级的全面Java学习路径,旨在帮助开发者逐步掌握这一强大语言的核心概念和技术。 首先,对于初级Java学习者,我们需要从基础语法开始。Java是一种面向对象的语言,它的基础包括数据...
12. **JNI(Java Native Interface)**:了解Java与本地代码交互的方法,允许Java调用C/C++函数。 13. **Java Applet和Swing**:虽然现代Java开发更多地转向JavaFX或Web应用程序,但仍然会介绍Applet的基本概念和...
这个"NDKDemo入门"就是针对Android NDK的初级实践,旨在介绍如何调用C语言实现的代码,通过JNI(Java Native Interface)与Java层进行通信。 首先,我们需要了解JNI。JNI是Java平台的标准接口,它允许Java代码和...
- 2000年5月8日,JDK 1.3发布,引入了对DNS的支持、JNI(Java Native Interface)和XML技术的支持。 - 2002年2月13日,JDK 1.4发布,标志着Java技术逐渐成熟,此时可以广泛应用于各种应用场景。 - **壮年期**: -...
Java初级教程旨在帮助初学者掌握Java编程语言的基础概念和核心语法。Java是一种广泛使用的面向对象的编程语言,具有跨平台、高性能和强大的安全特性。在本教程中,我们将深入探讨以下几个关键知识点: 1. **Java...
综上所述,Java本地接口规范(JNI)是Java生态系统中的一个关键组成部分,它不仅连接了Java世界与本地代码的世界,还为Java开发者提供了强大的工具箱,使他们能够在各种应用场景下发挥Java的优势。通过深入理解JNI的...
总结来说,“一个简单的Java虚拟机实现(v032)”是一个C++编写的初级JVM示例,旨在帮助初学者了解Java虚拟机的基本工作流程。虽然它可能不包含完整的JVM特性,但对于学习JVM的内部机制和字节码执行过程而言,是一个...
高级部分涉及并发编程、反射、JNI(Java Native Interface)以及更复杂的设计模式。 《Java编程思想第四版完整中文高清版》是Java经典教材,作者Bruce Eckel详尽地阐述了Java语言的核心概念和技术。书中通过大量...
- 使用技术:Java、Oracle数据库、SSH框架、Ajax、JFreeChart、JNI - 功能:员工信息管理、房间餐饮管理、预定登记、消费结账、权限分配、论坛通知等 - 特点:个人独立完成,得到好评,采用B/S架构,Web服务器为...
- **外观模式**:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 #### 三、网络协议与系统架构 在现代软件开发中,理解和应用网络协议及系统架构原理...
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这一特定框架。学习这些内容有助于开发者提升技能,适应多元化的开发环境,同时也为他们提供了参与开源...
【标题解析】:“史上最强NDK入门项目实战.rar”这个标题暗示了这是一个关于NDK(Native Development Kit)的初级教程项目,目标是帮助初学者掌握Android应用中的原生代码开发。NDK是Android开发中的一部分,它允许...
虽然不是初级开发者常用的技术,但在特定场景下,了解JNI的原理和使用方法是必要的。 8. **Swing或JavaFX**:这两者是JAVA的图形用户界面(GUI)库,用于创建桌面应用程序。理解组件的布局管理、事件处理和对话框等...