在java web项目中调用c++的dll程序简单案例

1.首先新建一个java web项目,编写一个java类

因为要使用jni来调用c++程序,因此该类中的方法名录需要用native修饰且只有方法声明,没有实现

package testnative;

public class TestNative {

    public native static String testNative(String str);

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

2.在eclipse中使用javah命令来编译头文件

在elipse中点击【Run】–>【External Tools】–>【External Tools Configurations..】 
测试会弹出一个窗口然后选择【Program】右击新建,如图:

在java web项目中调用c++的dll程序简单案例_第1张图片

这样我们就可以在eclipse中使用doc环境进行编译,如图,并输入红框中的命令,然后回车,这样就完成了Javah编译:

这里写图片描述

3.使用VS工具,新建一个C++项目:

在java web项目中调用c++的dll程序简单案例_第2张图片

在java web项目中调用c++的dll程序简单案例_第3张图片

在java web项目中调用c++的dll程序简单案例_第4张图片

这样生成的dll文件是32位的,如需生成64位的,继续如下步骤:

在java web项目中调用c++的dll程序简单案例_第5张图片

在java web项目中调用c++的dll程序简单案例_第6张图片

在java web项目中调用c++的dll程序简单案例_第7张图片

4.在新建的C++项目中加入必要的3个头文件

4.1 JDK中两个h头文件:jni.h 和 jni_md.h两个文件的目录分别位于安装好的JDK目录下include与include/win32下 
4.2 eclipse中点击【Window】–>【Show View】–>【Navigator】 
在java web项目中调用c++的dll程序简单案例_第8张图片

4.3将这三个头文件拷贝到新建的C++项目下 and 添加到头文件夹中 
4.3.1 
在java web项目中调用c++的dll程序简单案例_第9张图片

在java web项目中调用c++的dll程序简单案例_第10张图片

4.3.2 
在java web项目中调用c++的dll程序简单案例_第11张图片

5.新建一个C++源代码文件来编写我们的逻辑代码

在java web项目中调用c++的dll程序简单案例_第12张图片

6.编写c++代码前准备工作

打开使用javah编译好的头文件testnative_TestNative.h,将 #include更改为 #include "jni.h"

在java web项目中调用c++的dll程序简单案例_第13张图片

并将该头文件中的方法复制到main.cpp中

在java web项目中调用c++的dll程序简单案例_第14张图片

7.为该c++项目生成解决方案,然后在该项目的Debug目录下找到TestNative.dll文件,复制到java web 项目中

在java web项目中调用c++的dll程序简单案例_第15张图片

在java web项目中调用c++的dll程序简单案例_第16张图片

8.eclipse中设置 指定JVM查找动态连接库的目录(java.library.path)

8.1选择项目,点击右键>Build path>Configure Build path

8.2左侧选择Java Build Path>Libraries>JRE System Library>Native library location

8.3点击edit选择library路径,我这里选择的是工作空间的相对路径(即TestNative.dll文件所在目录),也可以直接输入绝对路径

在java web项目中调用c++的dll程序简单案例_第17张图片

9.当然在使用native方法之前需要先将dll文件加载进来,此时我们修改TestNative类

package testnative;

public class TestNative {

    static{
        System.loadLibrary("TestNative");
    }
    public native static String testNative(String str);

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

10.测试

在java web项目中调用c++的dll程序简单案例_第18张图片

控制台原样返回,到此结束。。。 
本文只是整理测试,非完全原创,参考链接如下: 
http://blog.csdn.net/liangzhao_jay/article/details/22854623 
http://blog.openlg.net/index.php/archives/723 
http://jingyan.baidu.com/article/380abd0a4640171d90192c9e.html 
http://blog.csdn.net/ring0hx/article/details/3242245

你可能感兴趣的:(java,web,native,c语言,转载-博友)