欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

windows下vscode+vs2019開發(fā)JNI的示例

 更新時間:2021年06月08日 11:38:31   作者:MONOLITHS  
本文給大家普及windows下vscode+vs2019開發(fā)JNI的示例以及各個環(huán)節(jié)的注意事項,文章通過示例代碼圖文相結(jié)合給大家介紹的非常詳細,需要的朋友可以參考下

JNI全稱是Java Native Interface(Java本地接口)單詞首字母的縮寫,本地接口就是指用C和C++開發(fā)的接口。由于JNI是JVM規(guī)范中的一部份,因此可以將我們寫的JNI程序在任何實現(xiàn)了JNI規(guī)范的Java虛擬機中運行。同時,這個特性使我們可以復用以前用C/C++寫的大量代碼。

       開發(fā)JNI程序會受到系統(tǒng)環(huán)境的限制,因為用C/C++語言寫出來的代碼或模塊,編譯過程當中要依賴當前操作系統(tǒng)環(huán)境所提供的一些庫函數(shù),并和本地庫鏈接在一起。而且編譯后生成的二進制代碼只能在本地操作系統(tǒng)環(huán)境下運行,因為不同的操作系統(tǒng)環(huán)境,有自己的本地庫和CPU指令集,而且各個平臺對標準C/C++的規(guī)范和標準庫函數(shù)實現(xiàn)方式也有所區(qū)別。這就造成使用了JNI接口的JAVA程序,不再像以前那樣自由的跨平臺。如果要實現(xiàn)跨平臺,就必須將本地代碼在不同的操作系統(tǒng)平臺下編譯出相應的動態(tài)庫。

JNI開發(fā)流程主要分為以下4步:

1、在eclipse中編寫聲明了native方法的Java類

2、生成JNI頭文件

3、在visual studio 中創(chuàng)建DLL 項目,實現(xiàn) JNI頭文件中的方法

4、在eclipse中設(shè)置Native library location,路徑為 visual studio 中生成的DLL 文件路徑,運行java 程序

通過上面的介紹,相信大家對JNI及開發(fā)流程有了一個整體的認識,下面通過一個示例給大家介紹vscode2019開發(fā)JNI,再深入了解JNI開發(fā)的各個環(huán)節(jié)及注意事項。

使用環(huán)境:

  • openjdk15
  • vscode
  • vs 2019

我使用maven默認創(chuàng)建項目

創(chuàng)建java項目

將以下代碼復制進App

public class App 
{
    static {
        System.loadLibrary("JNITest");
    }

    public native static void helloJNI();

    public static void main( String[] args )
    {
        helloJNI();
    }
}

修改App.java

接著打開debug(Ctrl+Shift+D)

打開debug窗口

點擊藍字創(chuàng)建launch.json配置文件

launch.json

打開一個終端進入到與App.java相同路徑
cd .\src\main\java\com\example\
再輸入javac -h .\ App.java
無警告則成功,此時路徑如下圖

創(chuàng)建.h文件

打開vs2019,創(chuàng)建一個動態(tài)鏈接庫

創(chuàng)建動態(tài)鏈接庫

項目名如下

項目名

此時項目如下圖

JNITest

然后我們將vscode中生成的com_example_App.h復制到該項目目錄下,然后按下Shift+Alt+a添加該頭文件

添加頭后

可以看見此時編譯器無法識別該頭,所以右鍵單擊項目選擇屬性然后進入此界面

配置

右邊小箭頭點擊編輯,此時出現(xiàn)以下界面

附加包含目錄

點擊右上角文件夾加號右邊出現(xiàn)省略號,點擊省略號然后導航至自己的jdk安裝目錄選擇includ目錄下的所有文件夾,最終成果如下

添加后

應用保存后可以看見警告已經(jīng)消失,此時打開pch.cpp加入以下代碼并完成函數(shù)

#include "pch.h"
#include "com_example_App.h"
#include <iostream>

JNIEXPORT void JNICALL Java_com_example_App_helloJNI
(JNIEnv*, jclass) {
	std::cout << "hello JNI!" << std::endl;
}

pch.cpp

此時將上方debug選擇x64,運行項目,運行完成后在項目目錄x64/Debug下找到生成的dll文件JNITest.dll

dll

復制當前路徑,打開vscode中的launch.json添加如下參數(shù)到configurations下,目錄更改為自己項目下的dll

{"vmArgs": "-Djava.library.path=C:/Users/monoliths/Documents/project/java/JNITest/x64/Debug"}

launch.json

可以將dll復制到項目下然后同樣配置java.library.path到dll
也可以直接將dll復制到System32下或添加到Path中

此時運行java項目可得到以下輸出:

最后結(jié)果

以上就是windows下vscode+vs2019開發(fā)JNI的詳細內(nèi)容,更多關(guān)于vscode2019開發(fā)JNI的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • java高并發(fā)下CopyOnWriteArrayList替代ArrayList

    java高并發(fā)下CopyOnWriteArrayList替代ArrayList

    這篇文章主要為大家介紹了java高并發(fā)下CopyOnWriteArrayList替代ArrayList的使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • Spring Security認證機制源碼層探究

    Spring Security認證機制源碼層探究

    SpringSecurity是基于Filter實現(xiàn)認證和授權(quán),底層通過FilterChainProxy代理去調(diào)用各種Filter(Filter鏈),F(xiàn)ilter通過調(diào)用AuthenticationManager完成認證 ,通過調(diào)用AccessDecisionManager完成授權(quán)
    2023-03-03
  • SpringBoot2.0 整合 Dubbo框架實現(xiàn)RPC服務遠程調(diào)用方法

    SpringBoot2.0 整合 Dubbo框架實現(xiàn)RPC服務遠程調(diào)用方法

    這篇文章主要介紹了SpringBoot2.0 整合 Dubbo框架 實現(xiàn)RPC服務遠程調(diào)用 ,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-07-07
  • Java實現(xiàn)生成pdf并解決表格分割的問題

    Java實現(xiàn)生成pdf并解決表格分割的問題

    這篇文章主要為大家詳細介紹了如何利用Java實現(xiàn)生成pdf,并解決表格分割的問題,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-11-11
  • Java實現(xiàn)瀏覽器大文件上傳的示例詳解

    Java實現(xiàn)瀏覽器大文件上傳的示例詳解

    文件上傳是許多項目都有的功能,用戶上傳小文件速度一般都很快,但如果是大文件幾個g,幾十個g的時候,上傳了半天,馬上就要完成的時候,網(wǎng)絡(luò)波動一下,文件又要重新上傳,所以本文給大家介紹了Java實現(xiàn)瀏覽器大文件上傳的示例,需要的朋友可以參考下
    2024-07-07
  • springboot?vue項目管理后端實現(xiàn)接口新增

    springboot?vue項目管理后端實現(xiàn)接口新增

    這篇文章主要為大家介紹了springboot?vue項目管理后端實現(xiàn)接口新增,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • Spring Boot 快速入門指南

    Spring Boot 快速入門指南

    Spring 框架是非常著名的 Java 開源框架,歷經(jīng)十多年的發(fā)展,整個生態(tài)系統(tǒng)已經(jīng)非常完善甚至是繁雜,Spring Boot 正是為了解決這個問題而開發(fā)的,為 Spring 平臺和第三方庫提供了開箱即用的設(shè)置,只需要很少的配置就可以開始一個 Spring 項目
    2017-03-03
  • java實現(xiàn)隨機生成驗證碼圖片

    java實現(xiàn)隨機生成驗證碼圖片

    這篇文章主要為大家詳細介紹了java實現(xiàn)隨機生成驗證碼圖片,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • 解析Oracle數(shù)據(jù)庫中的對象集合schema

    解析Oracle數(shù)據(jù)庫中的對象集合schema

    這篇文章主要介紹了Oracle數(shù)據(jù)庫中的對象集合schema,是Oracle數(shù)據(jù)庫入門學習中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-11-11
  • 基于String和List<String>間的相互轉(zhuǎn)換方式

    基于String和List<String>間的相互轉(zhuǎn)換方式

    這篇文章主要介紹了基于String和List間的相互轉(zhuǎn)換方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05

最新評論