您的位置:首页 > 编程语言 > C语言/C++

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文件顺序不对也会报错的)





测试运行就可以了

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: