关于这个的流程,我是这么理解的,
(1) 先写一份Java的要求清单
(2) 然后交由C++去实现
(3) C++实现 以后再转交给java核验
下面我们先了解不带返回值是如何实现的,至于带返回值,可以参考下面这位博主的博客,他列举出了各种情况的函数返回值java调用c++带返回值_旭旭_哥的博客-CSDN博客https://blog.csdn.net/luoyexuge/article/details/80556121
目录
首先我们用java写一份“要求清单”,即创建一个java类
写好以后,现在我们要把清单转变成C++认识的模样,即.h文件
找到CallCProgram.java在文件夹中的位置
并在上面路径的开头输入 cmd,这样的话,进入命令行以后就可以直接跳转到这个路径了
在命令行中输入 javac -h ./ CallCProgram.java
注意: 使用的java只要是一个普通类就可以,不需要加任何注解,不然反倒会出现一些奇怪的错误
由于java要求我们生成的库是Dll2.dll,所以我们新建的工程名就叫 Dll2
连接java和C++之间的关键就是jni.h文件,jni.h文件又需要用到jni_md.h文件,这两个文件在jdk的安装路径下,如果不知道在哪,可以使用everything查找
jni_md.h在上图的win32文件中
我们把这两个文件所在的路径添加到项目包含的目录下
右键点击项目,属性——VC++目录——包含目录,加入路径
D:\Download\JDK\sdk_install\include\win32
D:\Download\JDK\sdk_install\include
小编使用的IDEA是64位平台,VS生成DLL库却是32位的,所以为了避免平台不兼容,这里最设置一下
点击配置管理器
将项目上下文改为64位的
新建两个文件分别是 PrintWord.h 和 PrintWord.cpp,将第一步生成的.h文件放到 PrintWord.cpp同级目录下
========================PrintWord.h ========================
需要注意的是,函数声明已经由java帮我们制定了,我们打开第一步生成的 .h 文件
所以我们直接拿来使用即可
========================PrintWord.cpp ========================
pch.h文件是项目工程被创建的时候,就已经存在了
接下来右键一键生成即可
我们在 项目中的的debug文件下找到 Dll2.dll文件,我们把这个文件加入到 jdk安装路径下的bin文件中
然后回到IDEA开始运行最开始的程序