Java如何使用IDEA调用一个带参数并带有返回值的C++代码

开发环境:
一、IDEA 2019.1.3
二、VS2010
三、JDK 1.8 X86

开发步骤:
一、编写Java代码:

package aa.bb.cc;

public class HelloCPlus {

    public static void main(String[] args){
        HelloCPlus helloCPlus = new HelloCPlus();
        int c = helloCPlus.HelloJava(3,5);
        System.out.println("这是通过调用c++代码计算3+5所得的值:"+ c);
    }

    public native int HelloJava(int a, int b);
}

二、生成.h文件

使用“WIN+R”命令输入CMD打开Windows的命令行程序,进入到项目的类目录中,
使用命令 `javah -classpath F:\JavaUseCPlus\src -jni aa.bb.cc.HelloCPlus`
即可生成HelloCPlus的.h文件(注:生成的.h文件将会存放在项目的类目录中)

Java如何使用IDEA调用一个带参数并带有返回值的C++代码_第1张图片
Java如何使用IDEA调用一个带参数并带有返回值的C++代码_第2张图片
生成的.h文件

/* DO NOT EDIT THIS FILE - it is machine generated */
#include 
/* Header for class aa_bb_cc_HelloCPlus */

#ifndef _Included_aa_bb_cc_HelloCPlus
#define _Included_aa_bb_cc_HelloCPlus
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     aa_bb_cc_HelloCPlus
 * Method:    HelloJava
 * Signature: (II)I
 */
JNIEXPORT jint JNICALL Java_aa_bb_cc_HelloCPlus_HelloJava
  (JNIEnv *, jobject, jint a, jint b);/* a和b两个形参需要自行添加,生成的.h文件没有两个形参名*/

#ifdef __cplusplus
}
#endif
#endif

三、编写C++代码
1、创建项目
Java如何使用IDEA调用一个带参数并带有返回值的C++代码_第3张图片
Java如何使用IDEA调用一个带参数并带有返回值的C++代码_第4张图片
Java如何使用IDEA调用一个带参数并带有返回值的C++代码_第5张图片
其中 aa_bb_cc_HelloCPlus.h是之前我们使用命令行程序生成的.h文件,jni.h和jni_md.h存在于JDK的安装目录中
Java如何使用IDEA调用一个带参数并带有返回值的C++代码_第6张图片
Java如何使用IDEA调用一个带参数并带有返回值的C++代码_第7张图片
在创建文件后,需要将aa_bb_cc_HelloCPlus.h文件放到VS2010的安装目录中,否则项目将不能读取该头文件
Java如何使用IDEA调用一个带参数并带有返回值的C++代码_第8张图片
文件创建成功!
2、编写C++代码
添加.cpp文件Java如何使用IDEA调用一个带参数并带有返回值的C++代码_第9张图片
Java如何使用IDEA调用一个带参数并带有返回值的C++代码_第10张图片
编写C++代码

#include "aa_bb_cc_HelloCPlus.h"
#include 
using namespace std;

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

生成文件
Java如何使用IDEA调用一个带参数并带有返回值的C++代码_第11张图片
生成成功后,在项目目录中得到我们需要的.dll文件
Java如何使用IDEA调用一个带参数并带有返回值的C++代码_第12张图片

四、再次编写Java代码
1、在编写代码之前,我们需要引入.dll文件(如果JDK是64位的需要切换为32位的JDK)
Java如何使用IDEA调用一个带参数并带有返回值的C++代码_第13张图片
在VM options中添加.dll文件的路径,“-Djava.library.path=F:\HelloJava\Debug”
Java如何使用IDEA调用一个带参数并带有返回值的C++代码_第14张图片
编写代码

package aa.bb.cc;

public class HelloCPlus {

	//这是在之前代码的基础之上添加的代码,目的是添加.dll文件
    static {
        System.loadLibrary("HelloJava");
    }

    public static void main(String[] args){
        HelloCPlus helloCPlus = new HelloCPlus();
        int c = helloCPlus.HelloJava(3,5);
        System.out.println("这是通过调用c++代码计算3+5所得的值:"+ c);
    }

    public native int HelloJava(int a, int b);
}

点击运行
Java如何使用IDEA调用一个带参数并带有返回值的C++代码_第15张图片
获得准确的值,调用完成!!!

你可能感兴趣的:(Java,C++)