摘要:提供了這個技術來實現調用和程序,但實現起來比較麻煩,所以后來公司在的基礎上實現了一個框架使用這個框架可以減輕程序員的負擔,使得調用和容易很多。
使用JAVA語言開發程序比較高效,但有時對于一些性能要求高的系統,核心功能可能是用C或者C++語言編寫的,這時需要用到JAVA的跨語言調用功能。JAVA提供了JNI這個技術來實現調用C和C++程序,但JNI實現起來比較麻煩,所以后來SUN公司在JNI的基礎上實現了一個框架——JNA
使用這個框架可以減輕程序員的負擔,使得JAVA調用C和C++容易很多。以下例子來源于JNA的官方文檔,有興趣研究的同學可以到官網查看更多的例子:
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); /* * 聲明一個跟C語言的printf()一樣的方法,參數類型要匹配 * C語言的printf()方法原型如下: * int __cdecl printf(const char * __restrict__ _Format,...); */ void printf(String format, Object... args); } public static void main(String[] args) { //調用C語言的printf()方法 CLibrary.INSTANCE.printf("Hello, World->%d",2014); } }
程序輸出結果如下:
Hello, World->2014
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/64023.html
摘要:我們知道,發起函數調用,需要構造一個棧幀。構造棧幀的具體實現細節的選擇,被稱為調用慣例。要想完成這個函數調用邏輯,就要運行時構造棧幀,生成參數壓棧和清理堆棧的工作。目前,幾乎支持全部常見的架構。 原文:http://nullwy.me/2018/01/java...如果覺得我的文章對你有用,請隨意贊賞 遇到的問題 前段時間開發的時候,遇到一個問題,就是如何用 Java 實現 chdir...
摘要:目錄創建創建項目與工具項目與工具步驟與代碼步驟與代碼使用調用使用調用項目與工具項目與工具步驟與代碼步驟與代碼實際效果實際效果參考鏈接參考鏈接創建項目與工具步驟與代碼使用創建動態鏈接庫項目設置項目名與項目 目錄 1 C++創建dll 1.1 項目與工具 1.2 步驟與代碼 2 Java使用JN...
摘要:與動態鏈接庫配套的,會有相應的頭文件,來聲明動態鏈接庫中對外暴露的方法。結構體映射結構體映射類編寫類,繼承,表示這個一個結構體。聲明字段與,并且設置訪問屬性為。計算機狀態結構體結構體指針結構體具體的值至此,功能完成。 問題描述 虛擬化項目,需要用到Java調用原生代碼的技術,我們使用的是開源庫JNA(Java Native Access)。 Native(C/C++)代碼,編譯生成動態...
摘要:序在里頭如何獲取硬盤的序列號呢,這里涉及了跨平臺的問題,不同的操作系統的查看命令不一樣,那么里頭如何去適配呢。這里使用了這個項目來獲取。使用的是的方式而不是的形式來進行本地調用的。獲取方法,,,和之間的區別是什么,它們的調用效率怎么排名 序 在java里頭如何獲取硬盤的序列號呢,這里涉及了跨平臺的問題,不同的操作系統的查看命令不一樣,那么java里頭如何去適配呢。這里使用了oshi這個...
摘要:注本文首發于公眾號,可長按或掃描下面的小心心來訂閱實驗環境版本版本首先當然需要安裝好環境,最好再安裝上可視化插件來便于我們直觀地查看數據。 showImg(https://segmentfault.com/img/remote/1460000015723674); 注: 本文首發于 My 公眾號 CodeSheep ,可 長按 或 掃描 下面的 小心心 來訂閱 ↓ ↓ ↓ showI...
閱讀 3937·2021-10-12 10:12
閱讀 2897·2021-09-10 11:18
閱讀 3681·2019-08-30 15:54
閱讀 2814·2019-08-30 15:53
閱讀 645·2019-08-30 13:54
閱讀 976·2019-08-30 13:21
閱讀 2267·2019-08-30 12:57
閱讀 1698·2019-08-30 11:10