java jni 调用c++库

来源:互联网 发布:淘宝企业店铺出售 编辑:程序博客网 时间:2024/06/08 18:21

1.先创建java项目


2.用javah命令生成c++头文件(com_xzazt_dll_HelloWorldDll.h)

打开项目所在的文件夹,打开src文件夹,按住shift键,鼠标点击右键-->在此处打开命令窗口

①编译java文件,生成.class文件

②用javah 生成c++头文件

注意:javah命令要在src目录下执行,不然会报错“找不到 com.xzazt.dll.HelloWorldDLL 的类文件”

3.vs2015开发c++库

打开vs2015-->文件-->新建-->项目

此处选择Win32项目或Win32 控制台应用程序都可以

点击下一步

这里选择DLL,空项目,点击完成。

解决方案中,点中helloworlddll右键-->在文件资源管理器中打开文件夹

将刚刚生成的.h文件复制进来


点击头文件右键-->添加-->现有项

选中复制c++头文件,点击添加

打开c++头文件,会发现有好些错误,下一步

点击helloworlddll右键-->属性

选择VC++目录-->包含目录-->编译

添加jdkinclude和其下面的win32文件夹,点击确定-->确定

创建cpp文件源文件-->添加-->新建项

选择C++文件,命名为helloworlddll.cpp,点击添加

cpp文件写入头部引入,将c++头文件中的方法复制过来,添加方法体


点击helloworlddll右键-->重新生成或生成


时在资源文件管理中打开文件夹

上一级文件夹

Debug文件夹中就可以找到生成的DLL文件了

测试


dll文件复制到jdk的bin目录中,名字改为和eclipse中的System.loadLibrary("hwDll");加载的名字一致

注意:

①:如果不想发在jdk中,也可以通过System.out.println(System.getProperty("java.library.path"));查看都有哪些路径可以使用

②:no hwDll in java.library.path:这是没有找到hwDll 库文件,可以通过①查看放哪里

③:E:\JDK\jdk1.7.0_45\bin\hwDll.dll: Can't find dependent libraries:这是缺少依赖的dll库文件

可以通过depends工具查看缺少哪些依赖的dll库,然后上网上下载就可以了,直接搜dll文件下载,有好些网站可以下载的,把下载的一样放到jdk中就行了,或者在java代码中透过System.load()加载dll文件(注意dll文件顺序不对也会报错的)


测试运行就可以了



1 0
原创粉丝点击