JNI调用C++ demo

Java部分

创建一个Java工程(JavaJNI),在工程内生成java与C++的通信接口(JavaJNITest)
在这里插入图片描述
代码内容

public class JavaJNITest {

    public native void helloWorld();

}

进入工程文件夹内生成C++编译所需头文件
当前执行命令行为

  1. javac JavaJNITest.java 生成 JavaJNITest.class
  2. javah JavaJNITest 生成 JavaJNITest.h

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

C++部分

IDE为Microsoft Visual C++6.0 可自主选择
创建一个项目(CJNITest)
在这里插入图片描述
在这里插入图片描述
将生成的头文件(JavaJNITest.h)放入工程内
在这里插入图片描述
写入需要被Java调用的函数
在这里插入图片描述
代码内容

#include "JavaJNITest.h"
#include <iostream>
using namespace std;

JNIEXPORT void JNICALL Java_JavaJNITest_helloWorld(JNIEnv *env, jobject job){
	cout << "Hello World!" << endl;
}

进行组建
在这里插入图片描述
编译过程可能会出现此错误:unexpected end of file while looking for precompiled header directive 解决办法如下图
在这里插入图片描述
在这里插入图片描述
组建后会在工程文件Debug文件中生成dll文件
在这里插入图片描述

Java调用JNI

在这里插入图片描述
代码内容

public class Test {

    static {
        //加载生成的dll
        System.load("F:\\wwj\\CJNITest\\Debug\\CJNITest.dll");
    }

    public static void main(String[] args) {
        JavaJNITest javaJNITest = new JavaJNITest();
        javaJNITest.helloWorld();
    }

}

效果输出
在这里插入图片描述

其他说明

Microsoft Visual C++6.0生成的dll为32位,需要用32位jdk调用,64位的jdk调用会报错

参考链接

https://blog.csdn.net/lwcloud/article/details/78326903
https://blog.csdn.net/weixin_34367845/article/details/87946501

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值