`
lee123lee123
  • 浏览: 9825 次
社区版块
存档分类
最新评论

JNI例子

阅读更多
JAVA可以通过JNI接口访问本地的动态连接库,从而扩展JAVA的功能。使用JAVA JNI接口主要包括以下步骤:
(1)编写JAVA代码,注明要访问的本地动态连接库和本地方法;
(2)编译JAVA代码得到.class文件;
(3)使用javah -jni 生成该类对应的C语言.h文件;
(4)使用C/C++实现(3)生成的.h文件中声明的各函数;
(5)编译C/C++实现代码生成动态连接库。
本文使用一个简单的helloWorld示例演示JNI的使用。

(1)编写JAVA代码
public class helloWorld
{
    public native void SayHello(String name);

    static
    {
        System.loadLibrary("examdll");
    }

    public static void main(String [] argv)
    {
        helloWorld hello = new helloWorld();
        hello.SayHello("myName");
    }
}

(2)编译JAVA代码

javac helloWorld.java

(3)生成实现函数头文件

javah -classpath . helloWorld

得到的文件内容如下:

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class helloWorld */

#ifndef _Included_helloWorld
#define _Included_helloWorld
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class:     helloWorld
* Method:    SayHello
* Signature: (Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_helloWorld_SayHello
  (JNIEnv *, jobject, jstring);

#ifdef __cplusplus
}
#endif
#endif

(4)在VC中实现上述函数

#include "helloWorld.h"
#include <stdio.h>
#include <string.h>
void JNICALL Java_helloWorld_SayHello(JNIEnv * env, jobject obj, jstring str)
{
    jboolean  b  = true;
    char s[80];
    memset(s, 0, sizeof(s));
    strcpy_s(s ,(char*)env->GetStringUTFChars(str, &b));
    printf("Hello, %s", s);
    env->ReleaseStringUTFChars(str , NULL);
}

**** 这是JNI的关键:通过env我们可以使用JAVA提供的一组函数操作与转换函数传递的参数。

(5)编译VC项目得到动态连接库 examdll.dll。
分享到:
评论

相关推荐

    ubuntu上面使用jni例子

    这个"ubuntu上面使用jni例子"的压缩包很可能是提供了一个在Ubuntu环境下开发和运行JNI程序的示例。 JNI的核心在于创建本地方法接口,这些接口允许Java代码调用C/C++编写的函数,反之亦然。下面我们将深入探讨在...

    摄像头JNI例子教程.zip

    通过这个摄像头JNI例子,我们了解了如何声明和实现本地方法,以及如何在C/C++代码中处理摄像头数据。JNI提供了一种强大的方式,让Java应用能够充分利用底层平台的功能,同时保持代码的可移植性。学习和掌握JNI技术,...

    jni例子——使用int数组

    在这个“jni例子——使用int数组”的示例中,我们将深入探讨如何在Java和C/C++之间传递和操作int数组。 1. **JNI基础知识**: - JNI接口提供了Java与本地代码(如C/C++)通信的桥梁,使得开发者可以在Java应用中...

    安卓串口Socket通讯USB驱动jni相关-Android中调用JNI例子.rar

    这个压缩包“安卓串口Socket通讯USB驱动jni相关-Android中调用JNI例子.rar”似乎包含了一个示例项目,展示了如何在Android应用中使用JNI来实现串口、Socket通信以及USB驱动的交互。以下将详细介绍这些知识点。 1. *...

    Android_JNI例子

    在这个"Android_JNI例子"中,我们将深入探讨如何在Android项目中运用JNI技术。 首先,我们需要了解JNI的基本概念。JNI是Java平台标准的一部分,提供了一组接口,让Java代码能够调用C/C++函数,同时也能让C/C++代码...

    JNI例子.zip

    这个"JNI例子.zip"文件包含了一个关于如何在Android应用中使用JNI的教程。 首先,我们来看`JNITest`项目。这是一个展示如何在Java代码中声明并调用本地方法的示例。在Java中,本地方法是用`native`关键字标记的,但...

    安卓平台的JNI例子

    【Android平台的JNI例子】 JNI(Java Native Interface)是Java平台的一个重要组成部分,它允许Java代码和其他语言写的代码进行交互。在Android开发中,JNI常用于实现高性能的计算、调用本地库、与硬件设备直接通信...

    linux-java调用c语言编译的so动态库-jni例子-简单计算器

    这个"linux-java调用c语言编译的so动态库-jni例子-简单计算器"是一个典型的示例,展示了如何利用JNI来创建一个Java应用程序,该程序能够调用C编写的动态链接库(.so文件)进行计算操作。 JNI是Java平台的一部分,它...

    简单易懂基于Android的JNI例子程序.rar

    这个"简单易懂基于Android的JNI例子程序.rar"压缩包提供了一个基础的示例,帮助初学者理解如何在Android应用中使用JNI来调用本地(C/C++)代码。以下是关于JNI在Android开发中的相关知识点的详细解释: 1. **JNI...

    Java JNI例子-创建DLL、项目导入DLL、IDEA配置JNI、JNI调用DLL(该DLL同时依赖第三方DLL)

    Java JNI例子-创建DLL、项目导入DLL、IDEA配置JNI、JNI调用DLL(该DLL同时依赖第三方DLL)

    Android应用源码串口通信JNI例子.zip

    【Android应用源码串口通信JNI例子】是一个关于在Android平台上使用Java Native Interface (JNI)进行串口通信的示例项目。在这个项目中,开发者展示了如何利用C/C++原生代码来实现与硬件设备的串行通信,从而扩展...

    jni简单的例子,初学者一看就会

    一个jni例子,放到桌面直接编译就能跑,一个jni例子,放到桌面直接编译就能跑,一个jni例子,放到桌面直接编译就能跑,一个jni例子,放到桌面直接编译就能跑,一个jni例子,放到桌面直接编译就能跑,一个jni例子,放...

    Android JNI例子

    在这个"Android JNI例子"中,我们将深入探讨JNI的基本概念、工作原理以及如何在实际项目中运用。 首先,JNI是Java平台的标准部分,它为Java应用程序提供了与本地代码交互的能力。在Android系统中,JNI特别有用,...

    Simple JNI 例子

    ndk andriod jni 例子 简单 实用 亲自验证

    Stuido中使用JNI例子HelloWorld

    本示例将详细介绍如何在Android Studio(Stuido)中创建并使用一个简单的JNI(HelloWorld)例子,包括生成本地方法库(so文件)以及在其他项目中调用。 1. **创建JNI项目** 首先,我们需要创建一个新的Android ...

    ubuntu下第一个Jni例子

    在这个例子中,会生成一个`HelloJNI.h`文件。 ```bash javah -jni HelloJNI ``` 4. **编写本地代码**:打开生成的头文件,实现`sayHello`方法。你需要包含jni.h头文件,并实现方法体。创建一个名为`hello.c`的C...

    jni例子程序

    通过这个简单的JNI例子,我们可以看到Java和本地代码之间的交互过程。JNI的使用可以大大扩展Java应用程序的功能,但也需要注意性能和安全问题,因为直接调用本地代码可能会绕过JVM的一些安全机制。 此外,JNI还支持...

    Android中调用JNI例子

    在Android开发中,JNI(Java Native Interface)是...通过这个简单的例子,你了解了如何在Android应用中利用JNI调用C++代码。随着对JNI的深入理解,你可以在需要的地方充分利用C++的优势,提高应用性能或实现特定功能。

    jni例子代码

    JNI(Java Native ...总结来说,JNI例子代码演示了如何通过JNI接口在本地方法中访问和操作Java对象的属性和方法。通过这个过程,开发者可以利用Java的高级特性以及本地代码的高效性,实现跨语言的代码协同工作。

    JNI例子的点点滴滴

    jni开发的demo,实现了Java调用native和native调用Java的功能。详情见博客:http://blog.csdn.net/hello_chillax/article/details/50920766

Global site tag (gtag.js) - Google Analytics