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

来源:互联网 发布:瑜伽 学费 知乎 编辑:程序博客网 时间:2024/05/22 16:42

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 __cplusplusextern "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++编写实现的接口,即动态链接库文件

运行结果如下:

此即调用成功。




0 0
原创粉丝点击