java jni 调用c++库
2017-02-21 16:02
134 查看
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++目录-->包含目录-->编译
添加jdk中include和其下面的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文件顺序不对也会报错的)
测试运行就可以了
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++目录-->包含目录-->编译
添加jdk中include和其下面的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文件顺序不对也会报错的)
测试运行就可以了
相关文章推荐
- 从 C/C++ 程序调用 Java 代码 (不是用JNI)
- AndroidJNI 通过C++调用JAVA
- 1.JAVA中使用JNI调用C++代码学习笔记
- Java调用C/C++编写的第三方dll动态链接库(非native API)--- JNI
- JNI编程,C++调用Java
- Java JNI 调用C++ API及中文编码问题
- Java使用JNI调用C/C++方法
- [cocos2dx]在cocos2dx中通过Jni实现Java与C++的互相调用(一)
- Java调用C++类库--JNI
- 使用JNI进行Java与C/C++语言混合编程(1)--在Java中调用C/C++本地库
- C++ 通过jni生成库供JAVA调用(上) (C++之间的调用)
- android-JNI学习之java和c++相互调用
- cocos2d 中使用jni Java 调用 C++ 方法
- 利用JNI在vs2010上实现c++调用Java类方法
- windows和linux环境下java调用C++代码-JNI技术
- 【转】基本JNI调用技术(c/c++与java互调)
- Java采用JNI调用VC++生成的dll(Java与C++交互)
- 0072 JAVA JNI 如何调用C或者C++生成的dll【基础】
- 通过JNI实现Java和C++的相互调用(转)
- JNI-Java调用C++牛刀小试