国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

Java如何調用C++ DLL庫

2019-11-26 14:08:27
字體:
來源:轉載
供稿:網友

 最近做了一個網頁端人臉識別的項目,用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);} 

(3)在TestJNI.cpp中添加代碼實現com_test_jni_Java2cpp.h方法,添加完之后代碼如下:

// TestJNI.cpp : 定義 DLL 應用程序的導出函數。//#include "stdafx.h"#include "TestJNI.h"#include "com_test_jni_Java2cpp.h"#include "dllApi.h"http:// 這是導出變量的一個示例TESTJNI_API int nTestJNI=0;// 這是導出函數的一個示例。TESTJNI_API int fnTestJNI(void){  return 42;}// 這是已導出類的構造函數。// 有關類定義的信息,請參閱 TestJNI.hCTestJNI::CTestJNI(){  return;}JNIEXPORT jint JNICALL Java_com_test_jni_Java2cpp_DLL_1ADD(JNIEnv *env, jobject obj, jint a, jint b){  int var = 0;  var = DLL_API_ADD(a, b);  return var;}JNIEXPORT jint JNICALL Java_com_test_jni_Java2cpp_DLL_1SUB(JNIEnv *env, jobject obj, jint a, jint b){  int var = 0;  var = DLL_API_SUB(a, b);  return var;}JNIEXPORT jint JNICALL Java_com_test_jni_Java2cpp_DLL_1MUL(JNIEnv *env, jobject obj, jint a, jint b){  int var = 0;  var = DLL_API_MUL(a, b);  return var;}JNIEXPORT jint JNICALL Java_com_test_jni_Java2cpp_DLL_1DIV(JNIEnv *env, jobject obj, jint a, jint b){  int var = 0;  var = DLL_API_DIV(a, b);  return var;}

(4)生成dll,在項目文件夾下的Debug文件夾內可以找到TestJNI.dll,但是因為我們在Java里要求dll名為JavaCallcpp,所以此時把項目重命名為JavaCallcpp,然后重新生成JavaCallcpp。【這一步生成會失敗,按照如下添加路徑】

6 調用方法

把第五步生成的JavaCallcpp.dll拷進JRE安裝路徑下的bin文件夾內,運行java程序即可。結果如下:

以上所述是小編給大家介紹的Java如何調用C++ DLL庫的全部敘述,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 石阡县| 新建县| 泾川县| 锡林浩特市| 湟源县| 新营市| 卢龙县| 称多县| 海门市| 平遥县| 富蕴县| 视频| 龙州县| 民勤县| 肇源县| 肥城市| 军事| 昌吉市| 海城市| 罗山县| 平江县| 萝北县| 比如县| 岳阳县| 邢台市| 册亨县| 天长市| 广西| 济阳县| 武定县| 河西区| 麟游县| 墨竹工卡县| 九江市| 德保县| 宿松县| 山阳县| 宜都市| 和龙市| 庆元县| 黎川县|