Java调用动态库所需要关心的问题:
1) 编写java程序:这里以HelloWorld为例。
class HelloWorld {
public native void displayHelloWorld();
static {
System.loadLibrary("hello"); //要调用的dll库
}
public static void main(String[] args) {
new HelloWorld().displayHelloWorld();
}
}
2) 编译 javac HelloWorld.java 生成HelloWorld.class文件。
3) 生成扩展名为h的头文件 javah HelloWorld 生成HelloWorld.h的头文件
4) 编写本地方法实现和由javah命令生成的头文件里面声明的方法名相同的方法。
#include "jni.h"
#include "HelloWorld.h"
#include other headers
JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld(JNIEnv *env, jobject obj){
printf("Hello world!\n");
return;
}
5) 生成动态库hello.dll
6) 运行程序 java HelloWorld
分享到:
相关推荐
总之,JNI编程技术为Java开发者打开了一扇通向本地世界的大门,让Java能够更好地利用底层资源,实现与操作系统或其他语言的深度集成。虽然学习JNI有一定的难度,但一旦掌握,就能在许多场景下发挥出强大的作用。通过...
结,经历了多次大规模一线实战的检验及不断完善,系统化地整理成册,回馈给广大 开发者。现代软件行业的高速发展对开发者的综合素质要求越来越高,因为不仅是编 程知识点,其它维度的知识点也会影响到软件的最终交付...
### JNI编程技术详解 #### 一、JNI简介与应用场景 JNI (Java Native Interface) 是 Java 平台标准的一部分,它允许 Java 代码与其他语言编写的代码进行交互,尤其是 C 和 C++。通过 JNI,开发人员可以在 Java 应用...
2. **JNI_编程技术__网文整理(1).doc 和 JNI_编程技术__网文整理.doc**:这些文档可能包含从网络上收集的各种JNI编程技巧和最佳实践,包括但不限于JNI函数的声明、数据类型的映射、异常处理、多线程支持等内容。...
- **JNI编程系列之高级篇**:进一步探讨了在Java类中定义native方法、访问Java类的域和方法等内容。 以上内容总结了从基础到高级的JNI相关知识点,希望能帮助读者全面掌握JNI技术并应用于实际开发中。
20. **JNI(Java Native Interface)**:允许Java代码调用C/C++原生库,实现性能优化或利用已有的库。 通过"JAVA编程基础50题",你可以逐一解决这些问题,不断实践和巩固,为更高级的Java开发打下坚实的基础。每道...
Java是一种广泛使用的面向对象编程语言,其核心特性之一就是多态性。多态性赋予了Java代码灵活性和可扩展性,使得程序可以处理多种不同类型的对象而无需知道具体类型。在Java中,多态性主要分为静态多态性和动态多态...
Java核心知识整理(常考八股文) Java是当前最流行的编程语言之一,广泛应用于Web开发、Android开发、企业软件开发等领域。作为Java开发者,需要掌握Java核心知识,包括JVM、Java语法、Java集合框架、Java多线程、...
- **本地方法区**:用于存储JNI(Java Native Interface)调用的本地方法栈。 - **堆**:所有对象实例以及数组都在堆中分配内存,是线程共享的区域。 - **方法区/永久代**:存储类信息、常量、静态变量等元数据,...
JNI,全称Java Native Interface,是Java平台标准的一部分,它允许Java代码和...通过阅读提供的文档和教程,如`JNI_编程技术__网文整理.doc`和`jni详解.pdf`,你将能够更深入地掌握JNI的使用,并在实践中发挥它的优势。
【Java编程基础】 Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现已被Oracle公司收购)于1995年发布。它的设计目标是具备“简单性、面向对象、健壮性、安全性、可移植性、高效性、多线程和动态性...
本篇文档是一份详尽的Java面试资料,由一位曾在百度入职的Java开发者整理。文档内容全面,覆盖了Java核心技术点,从基础到高级概念,旨在帮助准备面试的读者查漏补缺。以下知识点将根据文档中的部分内容进行详细解读...
Java是一种广泛使用的面向对象的编程语言,其强大的性能和跨平台能力使得它在企业级应用开发中占据重要地位。对于Java开发者来说,深入理解JVM(Java虚拟机)是提升技能的关键。以下是对"JAVA核心面试知识整理(283...
Java后端面试问题涵盖了许多核心知识点,主要集中在Java虚拟机(JVM)、Java基础、并发编程和性能调优等方面。以下是对这些领域的详细说明: ### JVM #### 内存区域与垃圾回收 JVM内存主要分为堆(Heap)、栈...
在Java编程环境中,获取USB外接设备的信息是一项重要的任务,特别是在物联网(IoT)和设备控制应用中。本文将深入探讨如何使用Java来检测、识别并获取USB设备的相关信息。 首先,我们需要理解Java中处理USB设备的基本...
- **本地方法区**:为Java Native Interface (JNI) 提供的内存区域,用于存储非Java语言编写的本地方法的调用信息。 - **堆(Heap)**:所有线程共享,主要用于对象实例的分配和存储。Java垃圾收集器主要在此区域...
总结,libandroidjni库是Android开发者用来简化JNI编程的一个工具,它可能包含了一系列预定义的函数和类,使得与本地代码的交互变得更加容易。对于希望在Android应用中利用C/C++代码的开发者来说,理解和掌握这个库...