Java调用C++动态链接库dll,有详细过程。VS2015+Eclipse以及失败解决方案

背景
由于之前一直没有接触过用Java调用C++,目前正在考虑用C++写主要的算法,然后用Java来调用。通过查找资料,发现要嘛用通信的方式,要嘛就使用JNI,也就是Java Native Interface的简称,中文是“Java本地调用”。通常在Java程序中的函数可以调用Native语言写的函数,Native一般指的是C/C++编写的函数。
Native程序中的函数可以调用Java层的函数,也就是说在C/C++程序中可以调用Java的函数。使用JNI的目的是为了屏蔽不同操作系统平台的差异性,通过Java语言来调用Native语言的功能模块。
本次博主将通过详细截图的形式来演示如何使用Java调用C++dll。按照截图完成,保证可以用。
附上相关的两个项目源码
http://download.csdn.net/detail/buptzhengchaojie/9553327
http://download.csdn.net/detail/buptzhengchaojie/9553328

另外还有一篇关于Java webservice里调用依赖其他dll 的自定义dll,如果需要,这里有传送门:

Java webservice 调用自定义dll(有其他依赖)方法全解,无需设置环境变量

一、新建Java工程,在Java类中声明一个native的方法

新建Java项目

这里写图片描述

在新建的项目中创建packet(包),并且在包下创建一个Class(类)。

这里写图片描述

接下来,在该类中添加如下代码:

public class JavaInvodeCPlus {

    //声明为native,表明是有外部来实现的

    public native String returnHelloWorldToUpcase(String string);

    public native void sayHelloWolrd();
}

二、使用Javah命令生成native方法的声明的C/C++头文件

进入该项目所在的位置,博主这里的位置是D:\00Coding\my-space\JavaInvokeCPlus
这里写图片描述

接着进入bin目录下,找到该packet下存在一个.class文件

这里写图片描述

我们需要用javah命令来生成头文件。回到bin目录下,因为这里涉及到包名,所以必须在包目录下来。按住shift键,同时在文件夹内空白处右击,可以进入命令行。当然,你也可以一步步进入到该路径下。

这里写图片描述

这里写图片描述

这里需要注意的是,文件的末尾不加上.class后缀。然后我们可以看到在bin目录下多了一个.h头文件。
打开我们可以看到如下代码:

/* DO NOT EDIT THIS FILE - it is machine ge
  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值