亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

一個(gè)簡(jiǎn)單的JNA使用例子

winterdawn / 2729人閱讀

摘要:提供了這個(gè)技術(shù)來(lái)實(shí)現(xiàn)調(diào)用和程序,但實(shí)現(xiàn)起來(lái)比較麻煩,所以后來(lái)公司在的基礎(chǔ)上實(shí)現(xiàn)了一個(gè)框架使用這個(gè)框架可以減輕程序員的負(fù)擔(dān),使得調(diào)用和容易很多。

使用JAVA語(yǔ)言開(kāi)發(fā)程序比較高效,但有時(shí)對(duì)于一些性能要求高的系統(tǒng),核心功能可能是用C或者C++語(yǔ)言編寫(xiě)的,這時(shí)需要用到JAVA的跨語(yǔ)言調(diào)用功能。JAVA提供了JNI這個(gè)技術(shù)來(lái)實(shí)現(xiàn)調(diào)用C和C++程序,但JNI實(shí)現(xiàn)起來(lái)比較麻煩,所以后來(lái)SUN公司在JNI的基礎(chǔ)上實(shí)現(xiàn)了一個(gè)框架——JNA
使用這個(gè)框架可以減輕程序員的負(fù)擔(dān),使得JAVA調(diào)用C和C++容易很多。以下例子來(lái)源于JNA的官方文檔,有興趣研究的同學(xué)可以到官網(wǎng)查看更多的例子:

import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Platform;

/** Simple example of JNA interface mapping and usage. */
public class HelloWorld {

    // This is the standard, stable way of mapping, which supports extensive
    // customization and mapping of Java to native types.

    public interface CLibrary extends Library {
        CLibrary INSTANCE = (CLibrary) Native.loadLibrary(
                        (Platform.isWindows() ? "msvcrt" : "c"), CLibrary.class);

        /*
         * 聲明一個(gè)跟C語(yǔ)言的printf()一樣的方法,參數(shù)類(lèi)型要匹配
         * C語(yǔ)言的printf()方法原型如下:
         * int __cdecl printf(const char * __restrict__ _Format,...);
         */
        void printf(String format, Object... args);
    }

    public static void main(String[] args) {
        //調(diào)用C語(yǔ)言的printf()方法
        CLibrary.INSTANCE.printf("Hello, World->%d",2014);
    }
}

程序輸出結(jié)果如下:

  

Hello, World->2014

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/64023.html

相關(guān)文章

  • Java 外部函數(shù)接口:JNI, JNA, JNR

    摘要:我們知道,發(fā)起函數(shù)調(diào)用,需要構(gòu)造一個(gè)棧幀。構(gòu)造棧幀的具體實(shí)現(xiàn)細(xì)節(jié)的選擇,被稱(chēng)為調(diào)用慣例。要想完成這個(gè)函數(shù)調(diào)用邏輯,就要運(yùn)行時(shí)構(gòu)造棧幀,生成參數(shù)壓棧和清理堆棧的工作。目前,幾乎支持全部常見(jiàn)的架構(gòu)。 原文:http://nullwy.me/2018/01/java...如果覺(jué)得我的文章對(duì)你有用,請(qǐng)隨意贊賞 遇到的問(wèn)題 前段時(shí)間開(kāi)發(fā)的時(shí)候,遇到一個(gè)問(wèn)題,就是如何用 Java 實(shí)現(xiàn) chdir...

    pubdreamcc 評(píng)論0 收藏0
  • Java調(diào)用dll文件

    摘要:目錄創(chuàng)建創(chuàng)建項(xiàng)目與工具項(xiàng)目與工具步驟與代碼步驟與代碼使用調(diào)用使用調(diào)用項(xiàng)目與工具項(xiàng)目與工具步驟與代碼步驟與代碼實(shí)際效果實(shí)際效果參考鏈接參考鏈接創(chuàng)建項(xiàng)目與工具步驟與代碼使用創(chuàng)建動(dòng)態(tài)鏈接庫(kù)項(xiàng)目設(shè)置項(xiàng)目名與項(xiàng)目 目錄 1 C++創(chuàng)建dll 1.1 項(xiàng)目與工具 1.2 步驟與代碼 2 Java使用JN...

    Jeff 評(píng)論0 收藏0
  • Head First JNA

    摘要:與動(dòng)態(tài)鏈接庫(kù)配套的,會(huì)有相應(yīng)的頭文件,來(lái)聲明動(dòng)態(tài)鏈接庫(kù)中對(duì)外暴露的方法。結(jié)構(gòu)體映射結(jié)構(gòu)體映射類(lèi)編寫(xiě)類(lèi),繼承,表示這個(gè)一個(gè)結(jié)構(gòu)體。聲明字段與,并且設(shè)置訪問(wèn)屬性為。計(jì)算機(jī)狀態(tài)結(jié)構(gòu)體結(jié)構(gòu)體指針結(jié)構(gòu)體具體的值至此,功能完成。 問(wèn)題描述 虛擬化項(xiàng)目,需要用到Java調(diào)用原生代碼的技術(shù),我們使用的是開(kāi)源庫(kù)JNA(Java Native Access)。 Native(C/C++)代碼,編譯生成動(dòng)態(tài)...

    YPHP 評(píng)論0 收藏0
  • java如何獲取hdd序列號(hào)

    摘要:序在里頭如何獲取硬盤(pán)的序列號(hào)呢,這里涉及了跨平臺(tái)的問(wèn)題,不同的操作系統(tǒng)的查看命令不一樣,那么里頭如何去適配呢。這里使用了這個(gè)項(xiàng)目來(lái)獲取。使用的是的方式而不是的形式來(lái)進(jìn)行本地調(diào)用的。獲取方法,,,和之間的區(qū)別是什么,它們的調(diào)用效率怎么排名 序 在java里頭如何獲取硬盤(pán)的序列號(hào)呢,這里涉及了跨平臺(tái)的問(wèn)題,不同的操作系統(tǒng)的查看命令不一樣,那么java里頭如何去適配呢。這里使用了oshi這個(gè)...

    jzman 評(píng)論0 收藏0
  • Elastic Search搜索引擎在SpringBoot中實(shí)踐

    摘要:注本文首發(fā)于公眾號(hào),可長(zhǎng)按或掃描下面的小心心來(lái)訂閱實(shí)驗(yàn)環(huán)境版本版本首先當(dāng)然需要安裝好環(huán)境,最好再安裝上可視化插件來(lái)便于我們直觀地查看數(shù)據(jù)。 showImg(https://segmentfault.com/img/remote/1460000015723674); 注: 本文首發(fā)于 My 公眾號(hào) CodeSheep ,可 長(zhǎng)按 或 掃描 下面的 小心心 來(lái)訂閱 ↓ ↓ ↓ showI...

    Me_Kun 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<