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
- java中调用C/C++编写的生成的动态连接库dll文件接口的简单例子
- Java调用C/C++编写的动态连接库-JNI
- java 解决调用c语言实现简单HelloWorld函数生成.dll动态链接库的32位dll文件无法在64位机上运行
- 调用C语言编写的DLL文件
- C编写的动态库dll C++调用
- JAVA JNI调用C编写的dll
- JAVA技巧(Java中调用C/C++生成的DLL)
- JAVA中调用C/C++生成的DLL
- Java中调用C/C++生成的DLL
- Java中调用C/C++生成的DLL
- Java中调用C/C++生成的DLL
- Java调用C/C++编写的第三方dll动态链接库
- java调用c/c++编写的第三方dll动态链接库
- JNI技术之Java调用C/C++编写的第三方dll-动态链接库
- Java调用C/C++编写的第三方dll动态链接库
- Qt中调用VC6生成的动态库DLL文件
- java调用C/C++生成的dll动态链接库----借助JNI
- Java调用C/C++代码-生成java调用的DLL
- Make menuconfig错误解决
- 西山居笔试
- height、clientHeight、scrollHeight、offsetHeight区别
- openwrt部分内容1
- Android 从网页中跳转到APP
- java中调用C/C++编写的生成的动态连接库dll文件接口的简单例子
- 关于相对布局RelativeLayout的各种属性介绍
- java静态代码块
- 中国女孩成福布斯最年轻富豪
- Linux Notifier Chains
- vc gif 动画生成
- mfc sprintf引发的内存溢出
- 【Oracle】RAC ORA-12545问题解决
- python脚本的调试方法讲解