如何用Java调用c++生成的dll文件(1)

2025-05-25 22:06:00

使用Java调用Visual C++生成的dll(动态链接库)文件,实现Java和C++联合编程。初次学习,重在分享实现步骤和细节,高手勿喷。参考文献:http://blog.csdn.net/lovesummerforever/article/details/25827199

工具/原料

JDK

Visual Studio 2010

建立Java工程

1、首先要安装好Visual Studio 2010 (其他版本也行)以及JDK(别忘了配置环境变量),然后安装Eclipse。以上软件安装可自行百度,有很多资料。

2、进入正题,首先在Eclipse中新建工程,File->New->Java Project

如何用Java调用c++生成的dll文件(1)

3、然后右击DllTest,New->package,再右击src目录下的com包,New->Class。这样我们的Java项目就建好了。

如何用Java调用c++生成的dll文件(1)
如何用Java调用c++生成的dll文件(1)

4、再建好的类文件Dlltest.java里添加代码。主要是导入dll文件的loadlibrary函数和要调用的函数声明shanfei。代码详见http://blog.csdn.net/lovesummerforever/article/details/25827199

如何用Java调用c++生成的dll文件(1)

编译Java工程并生成VC要用到的头文件

1、现在打开cmd,先进到当前java文件所在的目录,用cd xxx\xxx 命令即可,返回上一级目录用cd..命令(注意后面的俩点)。到当前目录,也就是com文件夹下,输入java艘早祓胂c Dlltest.java 指令编译java文件生成Dlltest.class文件,就在com文件夹下。

如何用Java调用c++生成的dll文件(1)

2、之后再回到上级目录,就是com文件夹的上一层src目录(罕铞泱殳cd..命令),执行javah命令生成头文件(头文件DllTest.h就在com的上层文件夹src中),此处一定注意执行javah命令(javah -classpath . -jni com.DllTest,注意点两边的空格)的目录,目录错误就会报错(如上图所示)。

建立VC++工程,生成dll文件

1、打开Visual Studio 2010,新建项目,选择win32项目

如何用Java调用c++生成的dll文件(1)

2、下一步,选择,dll项目,勾选空项目,点击完成,一个空的dll项目就建好了。

如何用Java调用c++生成的dll文件(1)

3、还记得之前java项目中生成的DllTest.h文件吗?它就是Java为C++项目指定的头文件,java生成头文件,c++里只需要将头文件里声明的函数实现就好了。首先把头文件复制到C++项目的目录下并导入到解决方案的头文件目录下。

如何用Java调用c++生成的dll文件(1)
如何用Java调用c++生成的dll文件(1)

4、新建一个cpp文件,文件名最好与头文件一致(不一样也可以),在这个cpp文件中我们要实现头文件中的函数,需要注意的是函数头必须跟DllTest.h中的一样,不能出错。加完代码,会发现包含的头文件jni.h和jni_md.h出错了,下一步就来解决它。

如何用Java调用c++生成的dll文件(1)

5、这个cpp文件中需要腻戴怯猡包含两个java安装目录下的头文件:jni.h和jni_md.h,分别位于java安装目录下的include文件夹和include里的win32文件夹内。找到这两个文件,复制到Visual Studio VC 2010 的头文件包含目录中(我的是MicroSoft Visual Studio 10.0\VC\Include,如图)。当然也可以把头文件之直接复制到当前项目的目录下(记得把代码改为#include “jni.h”),但是这样每次新建项目都得复制粘贴。

如何用Java调用c++生成的dll文件(1)
如何用Java调用c++生成的dll文件(1)

6、复制完之后头文件如果还报错,就检查一下VS的包含目录,确认你把头文件复制到VS的默认包含目录中。属性管理器->Debug->User->通用属性->VC++目录->包含目录(include),添加刚才放置头文件的目录即可。

如何用Java调用c++生成的dll文件(1)
如何用Java调用c++生成的dll文件(1)

7、解决了上述问题,就可以尝试编译项目生成dll文件了,在debug或release模式下点击生成解决方案,生成成功后到项目目录的debug或release目录下找到相应的dll文件。

在Java中调用c++生成的dll文件

1、生成了dll文件,终于到了最后一步。把生成的dll文件复制到Java项目的目录下,注意不是放在com文件夹,也不是src文件夹,是DllTest文件夹内,跟src同级,否则会报错。

如何用Java调用c++生成的dll文件(1)

2、还有一点需要注意的是,在Java文件内用LoadLibrary函数调用的库名必须与Dll文件名一致,而不是跟java类名一致,这点可以参考java 部分的代码。确认完上述问题,点击运行,稍等片刻就可以看到运行结果,java&dll之旅到此结束。

如何用Java调用c++生成的dll文件(1)
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢