关于这个的流程,我是这么理解的,

(1) 先写一份Java的要求清单

(2) 然后交由C++去实现

(3) C++实现 以后再转交给java核验


目录

一、生成一份要求清单

二、将清单交给C++去实现

1、新建一个C++工程

2、添加搜索路径

3、设置项目上下文(很重要)

4、编写项目文件

三、java检验C++实现的内容


一、生成一份要求清单

首先我们用java写一份“要求清单”,即创建一个java类

java调用一个jsp java调用一个c++可执行程序_java调用一个jsp

写好以后,现在我们要把清单转变成C++认识的模样,即.h文件

找到CallCProgram.java在文件夹中的位置

java调用一个jsp java调用一个c++可执行程序_c++_02

 并在上面路径的开头输入 cmd,这样的话,进入命令行以后就可以直接跳转到这个路径了

java调用一个jsp java调用一个c++可执行程序_c++_03

javac -h ./ CallCProgram.java

java调用一个jsp java调用一个c++可执行程序_c++_04

java调用一个jsp java调用一个c++可执行程序_java_05

注意: 使用的java只要是一个普通类就可以,不需要加任何注解,不然反倒会出现一些奇怪的错误

二、将清单交给C++去实现

1、新建一个C++工程

由于java要求我们生成的库是Dll2.dll,所以我们新建的工程名就叫 Dll2

java调用一个jsp java调用一个c++可执行程序_第三方库_06

2、添加搜索路径

连接java和C++之间的关键就是jni.h文件,jni.h文件又需要用到jni_md.h文件,这两个文件在jdk的安装路径下,如果不知道在哪,可以使用everything查找

java调用一个jsp java调用一个c++可执行程序_c++_07

 jni_md.h在上图的win32文件中

java调用一个jsp java调用一个c++可执行程序_java调用一个jsp_08

 我们把这两个文件所在的路径添加到项目包含的目录下

右键点击项目,属性——VC++目录——包含目录,加入路径

 D:\Download\JDK\sdk_install\include\win32

 D:\Download\JDK\sdk_install\include

java调用一个jsp java调用一个c++可执行程序_c++_09

3、设置项目上下文(很重要)

小编使用的IDEA是64位平台,VS生成DLL库却是32位的,所以为了避免平台不兼容,这里最设置一下

点击配置管理器

java调用一个jsp java调用一个c++可执行程序_第三方库_10

 将项目上下文改为64位的

java调用一个jsp java调用一个c++可执行程序_c++_11

4、编写项目文件

新建两个文件分别是 PrintWord.h 和 PrintWord.cpp,将第一步生成的.h文件放到 PrintWord.cpp同级目录下

 ========================PrintWord.h ========================

需要注意的是,函数声明已经由java帮我们制定了,我们打开第一步生成的 .h 文件

java调用一个jsp java调用一个c++可执行程序_java_12

 所以我们直接拿来使用即可

java调用一个jsp java调用一个c++可执行程序_java_13

 ========================PrintWord.cpp ========================

pch.h文件是项目工程被创建的时候,就已经存在了

java调用一个jsp java调用一个c++可执行程序_java调用一个jsp_14

 接下来右键一键生成即可

三、java检验C++实现的内容

我们在 项目中的的debug文件下找到 Dll2.dll文件,我们把这个文件加入到IDEA安装目录下的bin文件中,小编这里的路径是 D:\Download\IDEA\IDEA2022\bin

java调用一个jsp java调用一个c++可执行程序_java调用一个jsp_15

 然后回到IDEA开始运行最开始的程序

java调用一个jsp java调用一个c++可执行程序_c++_16

java调用一个jsp java调用一个c++可执行程序_第三方库_17

注意:如果在生成动态库的过程中,引入了其他第三方库,需要将其他第三方库的dll文件也加入到IDEA安装路径下的bin目录中。