`

Java调用C++类库--JNI

    博客分类:
  • java
 
阅读更多

JNI是Java平台中的一个重要的功能,这里我把我做的Demo总结一下,分享一下,我会把每个步骤尽量的详细的展现出来。
这里我就不讲解JNI的原理了,google,百度一下,到处都是
好了,直接来讲步骤吧,文章最后给出了C++和Java的Demo
第一步:安装Java jdk,eclipse。
第二步,配置Java环境变量,java环境变量配置
第三步,新建一个Java应用程序,名为:TestNativeCode,包名:com.liyong.TestNativeCode,类名:TestNativeCode
第四步,在TestNativeCode类里面添加如下代码:
复制代码
package com.liyong.TestNativeCode;

public class TestNativeCode {
    public native void sayHello();
    public static void main(String[] args) {
        System.loadLibrary("NativeCode");
        TestNativeCode nativeCode=new TestNativeCode();
        nativeCode.sayHello();
        }
}
复制代码

第五步,编译Java文件
1,运行-->cmd-->进入TestNativeCode项目的src目录下编译该Java类,命令 javac ./com/liyong/TestNativeCode/TestNativeCode.java。在该TestNativeCode.java目录下会生成TestNativeCode.class文件
2,使用javah生成头文件,命令 javah -jni com.liyong.TestNativeCode.TestNativeCode。在src目录下生成com_liyong_TestNativeCode_TestNativeCode.h文件。

第六步,编译C++类库
1,打开VS2008,新建Win32 项目NativeCode,如图所示:

确定后,在“应用程序类型”中选择“DLL”,如图:

2,将上一步生成的com_liyong_TestNativeCode_TestNativeCode.h添加到项目头文件中。

3,在NativeCode项目的“源文件”中添加NativeCode.cpp文件,具体如蓉如下

复制代码
#include "stdafx.h"
#include "com_liyong_TestNativeCode_TestNativeCode.h"
#include <iostream>
using namespace std;

JNIEXPORT void JNICALL Java_com_liyong_TestNativeCode_TestNativeCode_sayHello(JNIEnv * env, jobject obj)
{
cout<<"Hello NDK!"<<endl;
//printf("Hello NDK!");
}
复制代码

4,使用Release编译,生成NativeCode.dll,将其拷贝到java环境变量Java_Home的Bin目录下,比如,LZ的Java_Home目录是
C:\Program Files\Java\jdk1.6.0_25,将NativeCode.dll拷贝到C:\Program Files\Java\jdk1.6.0_25\bin目录下。

第七步,运行Java应用程序,会输出“Hello NDK!”,Ok,成功!这里只是一个简单的例子,具体的应用就靠大家举一反三啦

 

http://www.cnblogs.com/cpcpc/archive/2012/08/13/2636199.html

分享到:
评论

相关推荐

    Java调用C++动态库

    - **MyJDBCProject**:可能是一个包含Java代码的项目,展示了如何使用JNI调用C++库来处理数据库操作。可能包含了JNI的使用,以及如何在Java中调用C++编写的数据库访问功能。 - **MyMFCLibrary**:这个名字暗示可能...

    JAVA通过JNI调用C#dll的整个项目工程

    本项目工程提供了完整的Java、C++和C#的示例,可以帮助开发者理解如何在实际项目中实现Java通过JNI调用C# DLL的过程,从而提升应用的性能或实现特定的功能。通过学习和实践这个工程,开发者可以进一步提升跨语言编程...

    Android Java调用自己C++类库的实例讲解

    在Android开发中,有时我们需要利用C++的高性能特性来处理一些计算密集型任务,这时就需要...5. 通过Java方法调用C++函数。 这个过程使得Java和C++能够有效地协作,充分利用各自的优势,提高应用程序的性能和效率。

    java的jni方式调用C++封装的库文件

    总结:使用JNI调用C++库的过程涉及Java和C++的协同工作,包括Java环境配置、JNI接口设计、头文件生成、C++源码编写、编译生成DLL以及在Java中加载和调用。整个过程需要对两种语言都有一定的了解,但通过这种方式,...

    JNI DEMO:java jni技术 调用 c/c++ 的dll

    总结来说,这个"JNI DEMO"是一个完整的示例,展示了如何使用Java的JNI技术来调用C/C++编写的DLL。它包括了Java代码、JNI接口的实现、DLL的编译以及Java应用的运行。对于初学者,这是一个很好的实践教程,即使没有...

    java调用c++动态链接库输出

    当Java需要调用C++编写的动态链接库(DLL)时,可以通过Java Native Interface (JNI) 或 Java Access Bridge (JNA) 来实现。本文将详细介绍如何创建C++动态链接库,并讨论如何让Java应用程序调用这些库。 1. 创建...

    实战-C++调用Java函数

    本案例探讨的是如何使用C++调用Java函数,这通常涉及到JNI(Java Native Interface)技术。以下是对这个实战项目的详细解释: 首先,我们要理解标题"实战-C++调用Java函数"所涉及的核心知识点。C++是一种强大的系统...

    C++调用java代码的JNI实现

    ### C++调用Java代码的JNI实现概述 在软件开发领域,经常会出现不同语言之间相互调用的需求。本文将深入探讨如何使用C++通过JNI(Java Native Interface)调用来实现对Java代码的调用,特别关注于用户身份验证与...

    JNI-Java Native Interface资料(精华)

    JNI的主要职责是提供一套API,使Java代码能够调用非Java语言(如C/C++)编写的本地方法,同时也能让本地代码反向调用Java方法。通过JNI,开发人员可以创建、检查和更新Java对象(包括数组和字符串),调用Java方法,...

    java 调用windows API

    在调用Windows API时,JNI通常用于创建一个本地方法接口,通过这个接口,Java代码可以调用预先编译好的C/C++代码,而这些C/C++代码则直接调用Windows API函数。尽管这种方法灵活性高,但编写和维护C/C++代码可能增加...

    Java2 类库 Java2 类库

    14. **JNI**(Java Native Interface):允许Java代码调用本地(非Java)代码,如C和C++,实现了Java和其他语言的互操作性。 15. **JVM和类加载器**:Java虚拟机(JVM)是Java程序的运行环境,而类加载器负责加载类...

    javabridge-1.0.19-cp36-cp36m-win_amd64.zip

    JNI在各种场景下都很有用,例如当需要调用C/C++库,或者需要高性能计算时,可以借助已有的C/C++代码。JavaBridge则简化了这一过程,为Python开发者提供了一种友好的接口来利用JNI。 在压缩包内,"使用说明.txt"文件...

    Java 调用C/C++程序

    总之,Java调用C/C++程序的能力通过JNI得以实现,这是一种强大的技术,使得Java应用能够充分利用本地系统的资源,同时也保留了Java的跨平台优势。虽然使用JNI会增加代码的复杂性,但其灵活性和性能提升对于许多项目...

    python-javabridge-4.0.3-cp37-cp37m-win-amd64.zip

    Python-JavaBridge是一个重要的Python库,它为Python程序员提供了一个桥梁,使得他们能够与Java环境进行交互,调用Java类库和方法。这个压缩包"python-javabridge-4.0.3-cp37-cp37m-win-amd64.zip"是专门为Python ...

    opencv-java460-windows-64

    "opencv-java460-windows-64" 是OpenCV的一个特定版本,针对Java语言,并且适配于64位Windows操作系统。 OpenCV Java接口提供了丰富的API,使得Java开发者可以方便地利用OpenCV的功能。`opencv_java460.dll`是...

    javabridge-1.0.18-cp35-cp35m-win_amd64.zip

    JavaBridge 的主要作用就是作为 Python 和 JNI 之间的桥梁,使得 Python 开发者能够调用 Java 类库,利用 Java 的功能来扩展 Python 应用。 在“javabridge-1.0.18-cp35-cp35m-win_amd64.zip”这个压缩包中,包含了...

Global site tag (gtag.js) - Google Analytics