Java调用C/C++函数示例-JNIDemo

JNI(Java Native Interface) Java本地接口,在Java接口中用native关键字修饰,C/C++ 相当于Java接口的实现类,只不过使用C/C++来实现而不是Java的class来(implements)实现

这边博客只是简单的用C++来实现Java的(native)本地方法

环境准备:

C++/C编译环境 :MinGw

C++/C开发工具:eclipse 集成插件CDT

MinGw32位和64位:下载地址:https://download.csdn.net/download/qq_31419109/12939256

CDT:下载地址:http://www.eclipse.org/cdt/downloads.php

1. 创建一个文件夹来存放Java源码,我这里是存放在F:/java-code/JNI下的

2. 创建一个NativeDemo.java的一个源码文件,使用编辑器来编写以下代码:

public class NativeDemo {
    // 代码块,每次创建对象时执行段代码
	{
        // 加载C++编译后生成的动态库libJNIDemo.dll,相当于引入jar包,只不过一个是Java编译后的产物,一个是C++编译的产物
		System.load("F:/java-code/JNI/dll/libNativeDemo.dll");
	}
	
    // native关键字声明本方法调用本地接口
	public native void sayHello();
	
	public static void main(String[] args){
        // 首先调用NativeDemo无参构造创建匿名对象,然后用这个对象调用本地方法(C++实现方法内容)
		new NativeDemo().sayHello(); 
	}
}

3. 打开命令行窗口, 进入源文件所在的目录,先把NativeDemo.java编译成字节码文件,在使用javah NativeDemo生成C++的文件头,如果你本地没有安装Java环境,请先安装Java环境

我们可以打开生成的C++头文件,大概是这样的

4.  编写C++代码实现头文件中Java_NativeDemo_sayHello(JNIEnv *, jobject)函数,我这里为了方便编译使用eclipse来编写C++的代码

5. 在eclipse中创建一个C++项目

6. 把C++需要用到的jni.h和jni_md.h引入到项目路劲中,jni.h和jni_md.h是jdk提供的头文件,文件路径分别在%JAVA_HOME%/include/和%JAVA_HOME%/include/win32/

右击项目名,选择properties

可以在这里看到我们引入的资源已经存在

7. 创建source folder编写C++程序

new file

#include "NativeDemo.h"
#include <windows.h>
#include "iostream"

JNIEXPORT void JNICALL Java_NativeDemo_sayHello(JNIEnv *, jobject){
	using namespace std;
	cout << "Hello___________World";
}

 

8. 然后把我们之前生成的NativeDemo.h复制到src文件夹下

右击项目名

9. 然后点击编译按钮,生成动态库dll

10. 把动态库复制到我们最开始创建的文件夹下的dll目录下

11. 再回到命令行窗口执行java NativeDemo

这时候C++编写的打印语句就在控制台中打印出来了

参考:https://blog.csdn.net/qq_17310933/article/details/86289613

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值