JNI之调用C++程序例程

这篇博客介绍了如何使用JNI来调用C++程序,通过编写Java源码和对应的C++文件,创建动态链接库,并在Java中加载执行。示例简单明了,为深入理解JNI提供了一个基础应用。
摘要由CSDN通过智能技术生成

1.首先给出Java文件源码:

public class TestNative{
	static{
		System.loadLibrary("CppHello");
	}
	public static void main(String [] args){
		new TestNative().info();
	}
	public native void info();
}
编译:D:\Study Source>javac TestNative.java

生成宏文件:D:\Study Source>javah TestNative

2.打开生成的宏文件:

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

#ifndef _Included_TestNative
#define _Included_TestNative
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     TestNative
 * Method:    info
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_TestNative_info
  (JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif
可以看到这里已经声明了方法JNIEXPORT void JNICALL Java_TestNative_info (JNIEnv *, jobject),因此下一步只需要建立cpp文件,然后implement这个方法。

3.新建一个CppHello.cpp文件:

#include <stdio.h>
#include <iostream>
#include "TestNative.h"
JNIEXPORT void JNICALL Java_TestNative_info(JNIEnv *, jobject)
{            
    std::cout << "Hello world!" << std::endl; 
    return;
}
打开Visual Studio 命令提示,当然前提是你电脑上已经装了Visual Studio,然后编译:

D:\Study Source>cl -I"%JAVA_HOME%\include" -I"%JAVA_HOME%\include\win32" -LD CppHello.cpp /EHsc
4.运行Java程序

因为我的CppHello.dll在目录D:\Study Source下,因此执行:

D:\Study Source>java -Djava.library.path="D:\Study Source" TestNative
最终输出:Hello world!


我这里只是简单的举例JNI调用非Java程序的应用,关于JNI的其他应用,请参考http://wenku.baidu.com/view/790dbf7f5acfa1c7aa00cc41.html这个文档写的很详细。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值