您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關如何用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環境的安裝也非常簡單傻瓜化。
首先從Rust官方(rust-lang.org)下載安裝包rustup-init.exe(記得下載當前Windows對應的32位或者64位版本)。
然后直接執行安裝包,安裝程序為自動配置好系統路徑,以后就可以直接在命令行下使用了,比如cargo包管理器。
Windows下的rust編譯還依賴Microsoft C++ build tools工具,不安裝,后面在編譯時,會報錯說“link.exe”無法找到。
需要從微軟VS下載出下載vs_buildtools,選中C++工具和Windows SDK組件并安裝。
另外,為了方便一般建議安裝VS Code及其Rust插件:
配置Rust 板條箱的國內源,由于官方crates-io國內下載太慢,甚至容易失敗,所以先配置國內源(比如ustc)
在用戶目錄C:\Users\CC\.cargo創建一個config文件,內容配置為:
首先,通過cargo創建一個新的Rust項目:
cargo new hello-chongchong
以上命令這將創建一個新目錄并hello-chongchong創建基本項目框架目錄和文件。
進入該目錄,并使用--lib 命令嵌套創建依賴的庫項目:
cargo new --lib bindings
然后通過
code .
在VS Code打開該項目,截圖如下:
修改項目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 會彈出一下對話框。
新版本的板條箱中再帶了幾個例子,可以在windows-rs項目倉庫的examples目錄。
Rust for Windows 給rust在Windows開發應用帶來了福音,雖然一些API可能早就被廣泛地使用了,但是現在有了官方的支持,可以在文檔、示例和穩定性等各方面都有極大的改善。
上述就是小編為大家分享的如何用Rust編寫windows原生程序了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。