1、编写需要使用Jni的Java类文件
public class JniCall {
static {
System.loadLibrary("testJNA");
}
public native static int add(int first, int second);
public static void main(String[] args) {
int first = 3;
int second = 4;
System.out.printf("print in java : %d + %d = %d", first, second, add(first, second));
}
}
本地方法必须声明为native。
2、编译出class文件,用javah从class文件生成C的头文件JniCall.h
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class JniCall */
#ifndef _Included_JniCall
#define _Included_JniCall
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: JniCall
* Method: add
* Signature: (II)I
*/
JNIEXPORT jint JNICALL Java_JniCall_add
(JNIEnv *, jclass, jint, jint);
typedef struct Student {
char * name;
int age;
int height;
}StudentObj;
#ifdef __cplusplus
}
#endif
#endif
3、在VC下建立一个动态链接库项目testJNA
倒数第二个。
4、把生成的JniCall.h和$JAVA_HOME/include/jni.h、$JAVA_HOME/include/win32jni_md.h拷贝到vc项目testJNA的目录下
5、编写C的本地实现
#include "stdafx.h"
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE;
}
JNIEXPORT jint JNICALL Java_JniCall_add(JNIEnv *, jclass, jint first, jint second) {
printf("print in c : %d + %d = %d \n", first, second, first + second);
return first + second;
}
6、构建testJNA项目,生成testJNA.dll文件
7、把testJNA.dll拷贝到$JAVA_HOME/jre/bin目录下
8、运行Java类,调用本地方法
D:\Java\jdk1.6.0_02\bin>java JniCall
print in c : 3 + 4 = 7
print in java : 3 + 4 = 7
D:\Java\jdk1.6.0_02\bin>
分享到:
相关推荐
【Windows下JNI初学实例】 JNI(Java Native Interface)是Java平台标准的一部分,它允许Java代码和其他语言写的代码进行交互。JNI在很多场景下都非常重要,例如调用系统底层库、提升性能、接入硬件设备等。这篇...
在Windows环境下,开发Android应用程序时,我们经常需要与本地代码(如C或C++)进行交互,这就是JNI(Java Native Interface)的作用。本教程将详细介绍如何在Win7系统上,利用Eclipse集成开发环境和Android NDK...
在本主题中,我们将深入探讨如何在Windows和Linux环境中利用JNI来生成动态链接库(DLL for Windows,SO for Linux),并使Java能够调用C++编写的函数。 1. **Java调用C++的基本原理** - JNI为Java应用程序提供了一...
JNI在很多场景下都是必要的,比如调用操作系统本地库、加速性能关键的代码或者利用硬件特性等。本文将深入探讨JNI的两个核心头文件——`jni.h`和`jni_md.h`。 首先,`jni.h`是JNI的主要接口头文件,包含了所有JNI的...
标题中的"windows_JNI_32.rar"表明这是一个在Windows平台上使用的、与JNI(Java Native Interface)相关的软件或工具包,且是适用于32位系统的。JNI是Java平台的一个核心特性,它允许Java代码与其他语言写的代码进行...
具体来说,对于 Windows 平台,通常需要将 `.dll` 文件放在项目的类路径下或系统的搜索路径中;对于 Linux 平台,则需要将 `.so` 文件放在 `/usr/lib` 或其他合适的位置,并确保它们对所有用户都可读。 #### 五、...
总的来说,"JNI断点调试工程"提供了在Windows环境下使用Visual Studio 2008进行JNI开发和调试的实践经验。它强调了正确配置调试环境和理解JNI工作原理的重要性,这对于那些需要在Java中集成本地代码功能的开发者来说...
JNI在很多场景下非常有用,比如当需要利用已有的C或C++库,或者提升性能时,我们可以通过JNI将Java代码与本地代码集成。 在描述中提到的`jni.h`和`jni_md.h`是JNI编程中必不可少的头文件。`jni.h`包含了JNI接口的...
中科院分词工具,jni调用,包括文档和demo。该demo为改造版,官方提供的的ICTCLAS2011在java中使用总是报错,这个demo可以正常使用
中科院中文分词windows 64位系统JNI方式调用程序。
本教程聚焦于在Android Studio环境下使用JNI进行学习,涵盖了基本数据类型转化、引用数据类型转化以及JSON格式数据类型的转化。 首先,我们要理解JNI的基本概念。JNI为Java程序提供了一个接口,通过这个接口,Java...
ICTCLAS50_Windows_32_JNI 的使用,介绍ICTCLAS50_Windows_32_JNI 在eclipse等环境下的配置,以及怎么测试ICTCLAS50_Windows_32_JNI
libtensorflow_jni-cpu-windows-x86_64-1.6.0 libtensorflow_jni-cpu-windows-x86_64-1.6.0 libtensorflow_jni-cpu-windows-x86_64-1.6.0 libtensorflow_jni-cpu-windows-x86_64-1.6.0 libtensorflow_jni-cpu-...
通过这个简单的JNI示例,我们可以看到在Windows环境下,如何利用Android SDK和NDK进行本地代码的开发。理解并熟练运用JNI,不仅可以提升Android应用的性能,还能帮助开发者充分利用现有C/C++库,为复杂功能的实现...
1.) 在项目根目录下创建jni目录,下面是要放进去的第一个文件Android.mk LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := main_jni #LOCAL_CFLAGS := LOCAL_SRC_FILES := main.cpp #LOCAL_...
Android下的JNI(Java Native Interface)是一种允许Java代码与其他语言(如C、C++)交互的技术。JNI是Java 2 SDK的一部分,它提供了在Java程序中调用本地(非Java)代码的能力。当Java标准库无法满足特定需求,如...
JNI,全称Java Native Interface,是Java平台标准的一部分,它为Java代码和其他语言写的代码提供了一个接口。在Java应用程序中,JNI允许Java代码调用本地(非Java)代码,反之亦然,使得开发者能够利用Java的跨平台...
本教程将深入探讨Android下的JNI开发,并通过一个实际的Demo来阐述相关知识点。 1. **JNI基础** - **JNI简介**:JNI是Java平台的一部分,它为Java开发者提供了一种方式,可以直接在Java代码中调用本地(非Java)...
在Mac环境下,JNI的编译过程可能会与Windows或Linux有所不同,因为每个操作系统有自己的库管理和编译工具链。本篇文章将深入探讨如何在Mac上进行JNI编译。 首先,确保你已经安装了Java Development Kit (JDK)。Java...