亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何用Rust編寫windows原生程序

發布時間:2021-10-09 14:48:36 來源:億速云 閱讀:296 作者:柒染 欄目:系統運維

這期內容當中小編將會給大家帶來有關如何用Rust編寫windows原生程序,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

時下如果語言界要評選一個網紅的話,無疑會是Rust。Rust憑借著自己出色的安全性和高效性被各大平臺所接納,Linux內核,安卓底層開發,Windows底層開發相繼都采納并給出了對應的借口。微軟的Windows也是,最近發布了Rust  for Windows v0.9。更新中包括全面的調用支持,Rust可以直接原生調用任何Windows  API可以極大的拓展Rust在Windows下的開發能力和范圍。

概述

本次更新提供了很多新的特性和更新,根據官方的信息包括:

  • 添加了對Win32和COM API的支持,統一了Windows板條箱。這些Windows  API有新的項目win32metadata來添加。為了方便和統一,項目名稱由“Rust/WinRT”更改為“Rust for Windows”。

  • 添加了幾個示例 ,演示了如何調用各種Windows API(包括Win32,COM和WinRT API)。

  • Windows 板條箱在crates.io發布,現在支持MIT或Apache雙開源版權。

  • 內置生成的binding,無需再手動編寫。

  • Windows支持在Linux上構建。

  • Win32 API的許多改進和修復,例如對數組類型,各種字符串類型和更新的元數據的支持。

  • 添加了對COM接口的更自然和慣用的支持,例如返回值,以及對涉及C樣式聯合和嵌套類型之類的其他API的支持。

  • 縮短了構建時間并改善了錯誤處理。

  • 保留原始的API大小寫,這會影響使用Windows  crate的現有代碼。通過類似于QueryInterface的函數轉換為通用函數,從而可以更安全,更方便地調用許多與COM相關的函數。

環境配置

Window板條箱使用需要首先要在Windows下配置Rust開發環境,還在Rust環境的安裝也非常簡單傻瓜化。

安裝rustup

首先從Rust官方(rust-lang.org)下載安裝包rustup-init.exe(記得下載當前Windows對應的32位或者64位版本)。

如何用Rust編寫windows原生程序

然后直接執行安裝包,安裝程序為自動配置好系統路徑,以后就可以直接在命令行下使用了,比如cargo包管理器。

安裝C++ build tools

Windows下的rust編譯還依賴Microsoft C++ build  tools工具,不安裝,后面在編譯時,會報錯說“link.exe”無法找到。

如何用Rust編寫windows原生程序

需要從微軟VS下載出下載vs_buildtools,選中C++工具和Windows SDK組件并安裝。

如何用Rust編寫windows原生程序

安裝VS Code及其Rust插件

另外,為了方便一般建議安裝VS Code及其Rust插件:

如何用Rust編寫windows原生程序

crates-io國內源

配置Rust 板條箱的國內源,由于官方crates-io國內下載太慢,甚至容易失敗,所以先配置國內源(比如ustc)

在用戶目錄C:\Users\CC\.cargo創建一個config文件,內容配置為:

如何用Rust編寫windows原生程序

示例

首先,通過cargo創建一個新的Rust項目:

cargo new hello-chongchong

以上命令這將創建一個新目錄并hello-chongchong創建基本項目框架目錄和文件。

進入該目錄,并使用--lib 命令嵌套創建依賴的庫項目:

cargo new --lib bindings

然后通過

code .

在VS Code打開該項目,截圖如下:

如何用Rust編寫windows原生程序

修改項目Cargo.toml文件中,添加以下依賴項,依賴項告訴Cargo現在它依賴于新創建的win庫。

[dependencies] bindings = {path = " bindings"}

現在,在win文件夾下的Cargo.toml文件中,添加對Windows板條箱的依賴項,版本指定為最新的0.9.1。這樣就可以通過允許Cargo打包下載,構建和緩存Windows支持。

[dependencies] windows = "0.9.1" [build-dependencies] windows = "0.9.1"

然后在bindings目錄下創建一個新的源文件build.rs,并輸入一下源碼:

// build.rs fn main() { windows::build!( Windows::Win32::WindowsAndMessaging::MessageBoxA ); }

在代碼中,使用 windows::build 宏指定要使用的類型,可以再次列出需要使用的所API,Windows板條箱將直接元數據生成必要的綁定。

然后修改win/src目錄中為以下代碼:

windows::include_bindings!();

這樣,就可以在主項目main.rs文件中,任意調用指定的Windows API。此處我們創建一個“Hello Chongchong!”消息對話框。

use bindings::Windows::Win32::WindowsAndMessaging::{MessageBoxA, MESSAGEBOX_STYLE}; fn main() { unsafe { MessageBoxA(None, "Hello Chongchong!", "Message", MESSAGEBOX_STYLE::MB_OK); } }

注意,任何Win32函數和COM接口方法,都需要用unsafe方式調用。

然后通過cargo build編譯該項目,并通過cargo run 會彈出一下對話框。

如何用Rust編寫windows原生程序

新版本的板條箱中再帶了幾個例子,可以在windows-rs項目倉庫的examples目錄。

Rust for Windows  給rust在Windows開發應用帶來了福音,雖然一些API可能早就被廣泛地使用了,但是現在有了官方的支持,可以在文檔、示例和穩定性等各方面都有極大的改善。

上述就是小編為大家分享的如何用Rust編寫windows原生程序了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

太湖县| 怀仁县| 称多县| 枣阳市| 雅江县| 临沂市| 额尔古纳市| 汶川县| 平武县| 上栗县| 吕梁市| 房产| 林甸县| 大新县| 连山| 府谷县| 五莲县| 肇庆市| 青河县| 巴彦县| 恩施市| 重庆市| 巴彦淖尔市| 长沙市| 泸州市| 岳阳县| 东兴市| 开封市| 濮阳县| 澎湖县| 桃园市| 化德县| 柘荣县| 广西| 澜沧| 铁岭市| 马公市| 大关县| 柳江县| 玉屏| 陇西县|