Java调用C++ DLL库方法

发表于:2016-6-29 09:43

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:唐风    来源:51Testing软件测试网采编

  最近一个项目要开发网页端人脸识别项目,人脸识别的算法已经写好,是C++版,但是网页端要求使用Java后台,这就涉及到Java调用DLL的问题。经过查找,实现了一个简单的例子。
  1、第一步,先在Java中新建一个类
  如上图,其中注意这句System.loadLibrary("javaCallcpp");,这就是加载dll文件的代码了。然后我们需要dll中实现下面定义的加减乘除方法。
  2、编译文件,文件名为Java2cpp.java,首先编译成class文件,如果用的是eclipse,这个文件已经自动生成了,在工程目录下的bin文件夹下。用命令行编译,打开cmd窗口,cd到.java文件所在目录,执行命令javac Java2cpp.java,即生成Java2cpp.class
  然后执行命令javah Java2cpp生成Java2cpp.h头文件,但是这一步往往会失败,另一种方法可以成功,进入eclipse项目的目录,进入bin文件夹,执行命令javah -classpath . -jni 包名.类名(com.test.jni.Java2cpp),然后生成了com_test_jni_Java2cpp.h
  3、在VS中新建项目win32项目,命名为:TestJNI第二步选择如下:
  4、把第二步生成的头文件拷进项目文件夹,然后导入。
  5、实现头文件中的方法:
  (1)新建头文件dllApi.h,代码如下:
  #include "com_test_jni_Java2cpp.h"
  int DLL_API_ADD(int a, int b);
  int DLL_API_SUB(int a, int b);
  int DLL_API_MUL(int a, int b);
  int DLL_API_DIV(int a, int b);
  (2)新建dllApi.cpp实现上述方法,代码如下:
#include "stdafx.h"
#include <iostream>
#include "dllApi.h"
int DLL_API_ADD(int a, int b)
{
return (a + b);
}
int DLL_API_SUB(int a, int b)
{
return (a - b);
}
int DLL_API_MUL(int a, int b)
{
return (a*b);
}
int DLL_API_DIV(int a, int b)
{
return (a / b);
}
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号