`
Jon_LT
  • 浏览: 106577 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Windows下JNI初学实例

 
阅读更多

首先推荐一篇文章:  http://www.wangchao.net.cn/bbsdetail_1754615.html

     http://blog.csdn.net/abowu/article/details/7245609  1~4 篇文章

 

1:编写Java源程序

2:.java 通过编译生成 .class

3:  .class编译生成对应的.h

4:  .h通过编译生成.dll

5:  通过2编译所得的.class 调用.dll 

 

详细过程:

 

第一步: 用文本编译器编写HelloWorld.java 

 

class HelloWorld 
{
	public native void displayHelloWorld();
	static {
		System.loadLibrary("hello");
	}

	public static void main(String[] args) {
		new HelloWorld().displayHelloWorld();
	}
}

 

 

第二步: 通过手动编译将HelloWorld.java 编译成 HelloWorld.class

(如果用Eclipse 什么的 都是可以的,只要能生成就行)

 

 

javac HelloWorld.java 

 

运行上述代码有2个条件,首先Java环境变量要配置完成,其次已经定位到.java 所在的文件夹下

 

 

第三步:将HelloWorld.java 编译成 HelloWorld.h

 

 

javah HelloWorld

 

 

第四步:可以选用VC6.0 或者 VS 工具,将.h文件编译产生动态链接库.dll

 

 

这里采用 VC6.0 作为讲解

1. 打开VC6.0 选择新建Win32下,动态链接库工程,如图1.png 附件中

2. 新建一个.cpp文件,输入以下代码:

 

#include <jni.h>
#include "HelloWorld.h"
#include <stdio.h>
JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld(JNIEnv *env, jobject obj)
{
	printf("Hello world!\n");
	return;
}

 

3. 此时还需要2不操作才可以正确编译,形成.dll

(1)关于 jni.h,必须导入java 所在路径包括/jdk/include  和  /jdk/include/win32  如图2.png

(2)关于HelloWorld.h, 将前面编译好的.h文件加入到该工程下

 

这样就可以正确编译生成.dll

 

第五步:将生成的.dll 与 .class 放在同一目录下,然后执行

 

java HelloWorld

 

成功  (64位系统目前好像不支持) 错误:Can't load IA 32-bit .dll on a AMD 64-bit platform

 

全部文件可见附件。

 

 

 

  • 大小: 88.9 KB
  • 大小: 66.3 KB
  • JNI.rar (42.9 KB)
  • 下载次数: 3
分享到:
评论

相关推荐

    jni教程实例手把手

    JNI在许多场景下都是必不可少的,比如访问操作系统特定的功能、调用C/C++库、提高性能或者集成已有的C/C++代码。在这个“jni教程实例手把手”资源中,包含了多个文档和一个示例项目,旨在帮助学习者全面理解并掌握...

    adt-bundle JNI NDK 初学者实例

    通过学习这个实例,初学者可以更好地理解如何在Android应用中集成本地代码,以及如何在实际项目中使用JNI和NDK。 总之,`adt-bundle`、JNI和NDK是Android开发中的重要工具,它们使得开发者可以充分利用Java和C/C++...

    JNI 实例, 可以作为模板供初学者学习. 纯C版本

    这个实例是一个纯C版本的JNI应用,适合初学者作为学习参考。在这个实例中,我们将探讨JNI的基本概念、如何编写本地方法以及如何使用C语言实现这些方法。 1. JNI基础 - JNI定义了一套API,使Java应用程序能够调用...

    JNI 实例, 可以作为模板供初学者学习, 例子很详细

    本实例是专为初学者设计的,通过详细的例子和源代码,帮助理解JNI的工作原理和使用方法。 首先,JNI的核心在于定义了一套接口,使得Java代码可以通过这些接口调用本地(native)代码,也就是非Java语言编写的函数。...

    简单的jni实例,适合初学者使用

    这个“简单的JNI实例”显然是为了帮助初学者理解和掌握JNI的基本用法。 JNI的核心概念主要包括以下几个部分: 1. **本地方法接口**:JNI定义了一组函数,这些函数在Java虚拟机(JVM)内部实现,允许Java代码调用...

    jni调用第三方dll最简单的实例

    本实例将深入浅出地介绍如何通过JNI调用第三方DLL库,并以最简单的整型参数传递为例,帮助初学者快速理解JNI的工作原理。 首先,我们需要创建一个Java类,声明native方法。在Java中,我们使用`native`关键字来标记...

    jni最简单例子,注释详细

    JNI在很多场景下都是必要的,比如调用操作系统底层功能、接入C/C++库或者提升性能敏感部分的执行效率。这个“jni最简单例子,注释详细”应该是提供了一个基础的JNI学习教程,下面我们将深入探讨JNI的相关知识点。 1...

    AndroidStudio jni 示例

    本示例“AndroidStudio jni 示例”显然是为了帮助初学者理解如何在Android Studio项目中使用JNI技术。下面将详细介绍这个主题,并提供详细的步骤和知识点。 1. **JNI简介**: JNI允许Java应用程序调用本地(非Java...

    JNI CHM文档以及JNI编程规范

    总结来说,这个压缩包为学习和掌握JNI提供了一套完整的资源,无论是初学者还是有经验的开发者,都能从中受益。通过阅读CHM文档和PDF资料,你将能深入了解JNI的概念、使用方法以及编程规范,从而在实际项目中更加...

    android jni实例

    本实例是一个面向初学者的JNI开发入门教程,通过具体的项目"JniDemo",将帮助你理解JNI的基本概念和应用。 在Android应用开发中,JNI主要应用于以下几个场景: 1. **性能优化**:对于计算密集型任务,如图像处理、...

    Music小实例、MusicPlayer介绍、JNI简介

    这一小实例适用于初学者,帮助他们理解如何在Android应用程序中集成音乐播放功能。 ##### MusicPlayer简介 `MediaPlayer`是Android开发中用于播放音频和视频的一个核心类。它可以用于播放多种格式的媒体文件,包括...

    jni.rar_JNI编程_java jni_jni_site:www.pudn.com

    压缩包中的实例文档详细讲解了如何创建JNI项目,如何编写和调用本地方法,以及如何处理数据转换等问题,对于初学者来说是非常实用的学习材料。 通过学习和实践这些JNI编程资料,初学者可以掌握JNI的基本原理和操作...

    jni-helloWorld

    总的来说,"jni-helloWorld"是一个非常适合初学者了解JNI基本用法的实例,通过它,开发者可以学习到如何在Java程序中嵌入本地代码,实现Java与本地代码的高效交互。而提供的错误处理和解决方案则有助于在实践中解决...

    Jni调用Demo

    4. **编译本地方法**:将C/C++代码编译成动态链接库(如Windows下的.dll,Linux下的.so,MacOS下的.dylib)。 5. **加载库**:在Java代码的静态块中,通过`System.loadLibrary()`加载编译好的动态链接库。 6. **...

    JNI编程指南1

    2. **全面介绍**:第三至第十章系统地阐述了JNI的各种特性,通过丰富的实例详细讲解了如何使用JNI进行Java和本地代码的交互。这些章节深入探讨了JNI接口的使用,包括如何声明和实现本地方法,以及如何处理数据类型和...

    Android系统jni编程和调用实例

    Android开发通过jni技术编写C语言方法并实现java调用C方法的实例。自己用C语言编写了一个动态链接库ndkfoo,并通过java调用动态库中的函数invokeNativeFunction,返回一个字符串,在android程序中显示出来。是初学...

    JNI.zip_java jni_jni

    JNI在各种场景下都非常有用,比如访问操作系统底层功能、优化性能关键部分或者整合已有的C/C++库。这个“JNI.zip”文件包含了一份关于JNI编程的全攻略,对于想要学习和理解JNI的开发者来说是一份宝贵的资源。 JNI的...

    android-JNI开发

    - JNIEnv指针:每个JNI函数的第一个参数,是JNI接口的实例,提供了访问Java对象、数组、字符串等的方法。 - 类引用(Class Reference):表示Java类的本地表示,可以用来获取类的方法ID和字段ID。 - 方法ID和字段...

Global site tag (gtag.js) - Google Analytics