java调用C++代码
2024-08-25 08:08:43
一、在要使用到C++代码的类文件中声明一个native方法,例如:
public class TestNative{ public native void test(); }
二、javac编译此java文件,然后使用javah TestNative命令生成一个头文件
三、使用visual studio工具新建dll项目
然后将jdk目录下的inlcude文件夹下的jni.h和jawt.h以及include/win32文件夹下的jin_md.h和jawt_md.h文件添加在上面的dll项目中,然后将我们之前生成的TestNative.h文件中的#include<jni.h>改为#inlcude"jni.h"因为引号是在本地查找头文件,
而<>实在标准库函数中查找。
/* 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: test
* Signature: (LTestNative/JavaObject;)V
*/
JNIEXPORT void JNICALL Java_TestNative_test
(JNIEnv *, jobject); #ifdef __cplusplus
}
#endif
#endif
然后我们在C++中实现这个函数即可,例如:
// Dll_native.cpp: 定义 DLL 应用程序的导出函数。
// #include "stdafx.h"
#include "TestNative.h"
#include <iostream> JNIEXPORT void JNICALL Java_TestNative_test(JNIEnv *, jobject) { std::cout << "hello C++" << std::endl;
}
最后编译项目生成一个dll文件;
四、最后将生成好的dll文件放到java项目中,使用代码调用:
public class TestNative{ public native void test(); public static void main(String[] args){ System.loadLibrary("Dll_native"); TestNative tn = new TestNative();
tn.test();
} }
最新文章
- Eclipse利用Axis2插件构建Web Service并测试
- MySQL安装,启动
- oracle/sqlserver 递归
- Linux统计文件个数
- iOS : 静态库制作
- S1 :闭包
- cas改造随笔
- Java JPA 查询实体部分字段
- weekly review
- Linux设备驱动实现自己主动创建设备节点
- 常用颜色RGB、灰度值
- swiper 自定义分页器的使用
- ASP.NET Core 入门教程 3、ASP.NET Core MVC路由入门
- JAVA实现二叉树(简易版--实现了二叉树的各种遍历)
- hadoop的核心思想【转】
- Chrome Input框老是有输入记录的终极解决方案
- 一个或多个音频服务未运行 win7 错误1079:此服务的账户不同于运行于同一进程上的其他服务账户
- An ac a day,keep wa away
- Struts2_day01--导入源文件_Struts2的执行过程_查看源代码
- Spark常用算子-value数据类型的算子