java调用C++代码

首先我的参考博客如下:

https://www.cnblogs.com/CLAYJJ/p/7725975.html

https://www.cnblogs.com/xiaocainiao2hao/p/5619862.html

https://www.cnblogs.com/langtianya/p/3470896.html

流程如下:

1.建立一个java文件,在这里我只写了一个方法,myadd()。

package com.imgMatch;//包名影响着javah的使用

public class ForDll
{
	static 
	{
		System.loadLibrary("javaCallcpp");//javaCallcpp就是要加载的dll的名字,这是相对路径加载方式
	}

	public native int myadd(int a , int b);//myadd就是要在dll中实现的方法
	
	public static void main(String args[])
	{
		ForDll test = new ForDll();
		System.out.println(test.myadd(5, 6));
	}
}

2.1 命令行里面  javac ForDll.java 生成ForDll.class

2.2 继续,javah 生成.h,这是给C++用的。

注意,命令应该是

javah -classpath . -jni com.xx.xx

3.打开VS2015,建立一个win32控制台程序,这里选dll

4.1 将ForDll.h加入头文件之中

4.2 新建dllApi.h,内容如下:

#include "ForDll.h"

int myadd(int a, int b);

4.3 新建dllApi.cpp,实现上面的函数,内容如下:

#include "stdafx.h"
#include <iostream>
#include "dllApi.h"

int myadd(int a, int b)
{
	return (a + b);
}

4.4 写TestJNI.cpp,内容如下:

// TestJNI.cpp : 定义 DLL 应用程序的导出函数。
//

#include "stdafx.h"
#include "dllApi.h"
#include "ForDll.h"


JNIEXPORT jint JNICALL Java_ForDll_myadd(JNIEnv *env, jobject obj, jint a, jint b) {
	return a+b;
}

5.在ForDll.h中有问题:

#include <jni.h>

会报错,找不到该文件。参考上述的几篇文章,我将 jni.h,jawt_md.h,jni_md.h放在了头文件里和VC\include里面,重启VS就好了。

6.生成dll文件

在这里生成,结果在项目的Debug文件里面。如TestJNI\x64\Debug\TestJNI.dll。

要注意的是,如果你的java用的是64位的话,就要去生成64位的dll,不然java那边会报错。

7. 在java项目里面添加dll

选中该项目,右键属性,在java build path里面的Libraries里面,打开JRE System Lib,里面的Native lib location,选择你放dll的文件夹即可

8.运行结果如下:

  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值