java中调用C/C++编写的生成的动态连接库dll文件接口的简单例子

1、首先用java编写一个简单类

public class Hello
{
	public native void sayHello();
	static {
		System.loadLibrary("HelloDll");
	}
	public static void main (String[] args) {
    	new Hello().sayHello();
    }
}

使用javac Hello.java编译该类

再用javah Hello生成Hello.h头文件

2、在Visual C++ 6.0中新建一个动态链接库工程,工程名为HelloDll

3、在该工程中新建一个头文件名为:hello.h,将刚才生成的Hello.h文件中的代码复制进去,如下:

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

#ifndef _Included_Hello
#define _Included_Hello
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     Hello
 * Method:    sayHello
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_Hello_sayHello
  (JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif

不需要做任何修改

此时新建一个Test.cpp文件具体实现刚才的头文件中的函数,代码如下

#include "Hello.h"
#include <jni.h>

JNIEXPORT void JNICALL Java_Hello_sayHello
(JNIEnv *, jobject){
	printf("Hello world,I'm coming!");
	return;
}

此时若编译则会报错,说找不到jni.h文件,如下:

fatal error C1083: Cannot open include file: 'jni.h': No such file or directory

此时只需操作步骤4即可

4、在jdk的安装目录~\jdk1.6.0_25\include下将jni.h和~\jdk1.6.0_25\include\win32下的jni_md.h文件复制到Visual C++ 6.0的D:\Microsoft Visual Studio\VC98\Include目录下

5、此时在编译链接Test.cpp文件,即可生成动态链接库文件:

再将该文件复制到与Hello.class文件同一个目录下,运行java文件,即可调用有C/C++编写实现的接口,即动态链接库文件

运行结果如下:

此即调用成功。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值