成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Window-rs——用Rust編寫windows原生程序

系統 Windows
微軟的最近發布了Rust for Windows v0.9。更新中包括全面的調用支持,Rust可以直接原生調用任何Windows API可以極大的拓展Rust在Windows下的開發能力和范圍。本文我們通過實例來學習Rust for Windows(windows-rs) 。

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

概述

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

  • 添加了對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位版本)。

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

安裝C++ build tools

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

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

安裝VS Code及其Rust插件

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

crates-io國內源

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

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

示例

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

  1. cargo new hello-chongchong 

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

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

  1. cargo new --lib bindings 

然后通過

  1. code . 

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

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

  1. [dependencies] 
  2. bindings = {path = " bindings"

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

  1. [dependencies] 
  2. windows = "0.9.1" 
  3. [build-dependencies] 
  4. windows = "0.9.1" 

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

  1. // build.rs 
  2. fn main() { 
  3. windows::build!( 
  4. Windows::Win32::WindowsAndMessaging::MessageBoxA 
  5. ); 

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

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

  1. windows::include_bindings!(); 

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

  1. use bindings::Windows::Win32::WindowsAndMessaging::{MessageBoxA, MESSAGEBOX_STYLE}; 
  2. fn main() { 
  3. unsafe { 
  4. 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可能早就被廣泛地使用了,但是現在有了官方的支持,可以在文檔、示例和穩定性等各方面都有極大的改善。

 

責任編輯:趙寧寧 來源: 今日頭條
相關推薦

2023-09-26 19:20:09

微軟開源windows

2023-06-19 14:14:24

Rust程序Web

2023-06-23 14:15:09

Rust編程

2021-06-03 07:45:25

Rust Git 終端 UI

2017-08-03 08:34:54

gRPCCRust

2021-04-29 08:00:00

Windows微軟安全

2011-06-16 10:09:25

QT Windows DLL

2009-08-14 15:06:08

Windows服務程序

2011-05-17 14:53:35

C

2012-01-09 13:55:35

Java

2023-08-31 08:33:57

sudo-rs程序Unix

2011-06-27 13:57:42

JavaScript

2023-06-12 08:00:48

Napi-rsRust 前端工具

2022-02-07 16:40:12

RustGNU Coreut命令

2024-09-26 15:40:06

2009-10-21 09:28:34

Windows 7程序鎖

2024-06-10 23:07:05

2011-11-23 09:06:00

2023-09-25 15:30:14

云原生云計算

2016-03-31 11:31:02

Ubuntu on W微軟Windows 10
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲精久 | 亚洲视频中文字幕 | 日韩视频在线播放 | 在线国产一区二区 | 久久精品网 | 美女天堂 | 午夜在线视频一区二区三区 | 久久久精选 | 中文字幕高清av | 国产在线精品一区二区 | 亚洲成人一区二区三区 | 久久国产麻豆 | 久久久久国产 | 午夜国产 | 亚洲区一区二 | 成人av电影免费在线观看 | 精品久久亚洲 | 日韩欧美在线免费 | 国产精品一区二区视频 | 91欧美精品成人综合在线观看 | 欧美一区二区网站 | 精品日本久久久久久久久久 | 久久在线视频 | 国产精品s色 | 久久久日韩精品一区二区三区 | 欧美一区精品 | av男人的天堂在线 | av日韩一区| 欧美激情在线观看一区二区三区 | 日本三级电影在线观看视频 | 在线视频亚洲 | 91在线视频观看免费 | 一区二区三区精品视频 | 99精品国自产在线 | 亚洲永久| 午夜精品 | 色吧综合网 | 久久99精品久久 | www.久久艹| 国产精品综合一区二区 | 天天操天天拍 |