Java笔记-JNI的基本使用(Java调用C++的dll)
目錄
?
基本概念
過程演示
?
基本概念
JNI(Java Native Interface),這個是Java本地接口,可以調用Windows上的dll或者Linux上的so文件,當然要按照他的規范進行編寫。感覺這個和Qt寫Android程序的邏輯差不多,為什么這么說呢?
在Java目錄下,有專門生成動態鏈接庫的.h文件。通過包含這些文件使得Java能夠調用dll。
而Qt在下載某個編譯器后,會有大把的.java文件??梢酝ㄟ^直接修改這些java源碼,達到Qt庫編寫的Android程序有特殊的效果(比如全屏去狀態欄,半透明狀態欄)。
?
?
過程演示
Java開發IDE:IDEA
C++開發IDE:vs2012
用IDEA創建一個Java項目,創建如下代碼:
test.java
package com.IT1995;public class test {public native void testHello();public static void main(String[] args){System.loadLibrary("JNIDemo");test t = new test();t.testHello();} }進入com前的目錄,打開cmd,輸入:
此時會得到com_IT1995_test.h文件。
此時IDEA會變成這樣!
這里用VS2012創建一個dll的空項目,創建好后,把這個文件放到項目中,并且把包含目錄設置好:
創建一個.cpp文件,實現下面的這個方法:
這個其實是C語言的接口,但用的C++文件,C++兼容C語言,所以在此還是把他作為C++的dll。
TestJNI.cpp如下:
#include "com_IT1995_test.h" #include <iostream> #include <string> using namespace std;JNIEXPORT void JNICALL Java_com_IT1995_test_testHello(JNIEnv *, jobject){cout << "This is C++ print" << endl; }vs2012目錄結構如下:
本人是64位的java,所以把dll搞成64位
編譯C++源碼:
從新回到IDEA,添加一個依賴
從VS輸出目錄可以知道dll的目錄為E:\vs2012\JNIDemo\x64\Release\
java代碼如下:
package com.IT1995;public class test {public native void testHello();public static void main(String[] args){System.loadLibrary("JNIDemo");test t = new test();t.testHello();} }程序運行如下:
還是很有意思的,比如我這邊有一套基于C++的系統,是數據處理的,可以把他弄到服務器上,
Java搞Web做為數據采集和展示,C++做核心處理。
我擦,這個邏輯還是可以的,JNI還是很有工程領域!
?
總結
以上是生活随笔為你收集整理的Java笔记-JNI的基本使用(Java调用C++的dll)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java笔记-Spring中Rabbit
- 下一篇: 达梦工作笔记-将A表的ID插入到B表,将