Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Se pueden utilizar las funciones del sistema Windows en Rust?

¿Se pueden utilizar las funciones del sistema Windows en Rust?

Si la industria del lenguaje tuviera que seleccionar una celebridad de Internet hoy en día, sin duda sería Rust. Rust ha sido aceptado por las principales plataformas por su excelente seguridad y eficiencia. El kernel de Linux, el desarrollo subyacente de Android y el desarrollo subyacente de Windows lo han adoptado y han dado las excusas correspondientes. Lo mismo ocurre con Windows de Microsoft, que recientemente lanzó Rust para Windows (windows-rs) v 0.9. La actualización incluye soporte integral de llamadas. Rust puede llamar directamente a cualquier API de Windows de forma nativa, lo que puede ampliar en gran medida las capacidades de desarrollo y el alcance de Rust en Windows. En este artículo, aprendemos Rust para Windows a través de ejemplos.

Descripción general

Esta actualización proporciona muchas características y actualizaciones nuevas, que según la información oficial incluyen:

Soporte agregado para Win32 y COM API, cajas unificadas de Windows. Estas API de Windows han sido agregadas por el nuevo proyecto win32metadata. Por conveniencia y unificación, el nombre del proyecto se cambió de "Rust/WinRT" a "Rust para Windows".

Se agregaron varios ejemplos que demuestran cómo llamar a varias API de Windows (incluidas las API de Win32, COM y WinRT).

Las cajas de Windows se lanzan en crates.io y ahora admiten licencias duales de código abierto del MIT o Apache.

El enlace generado integrado elimina la necesidad de escribirlo manualmente.

Windows admite la compilación en Linux.

Muchas mejoras y correcciones en la API de Win32, como soporte para tipos de matrices, varios tipos de cadenas y metadatos actualizados.

Se agregó soporte más natural e idiomático para interfaces COM, como valores de retorno, así como soporte para otras API que involucran cosas como uniones estilo C y tipos anidados.

Tiempos de compilación reducidos y manejo de errores mejorado.

Conserve la carcasa original de la API, que afecta al código existente que utiliza cajas de Windows. La conversión a una función genérica a través de una función similar a QueryInterface permite llamadas más seguras y convenientes a muchas funciones relacionadas con COM.

Configuración del entorno

Para utilizar Windows Crate, primero debe configurar el entorno de desarrollo de Rust en Windows. La instalación del entorno de Rust también es muy simple e infalible.

Instalación de Rustup

Primero descargue el paquete de instalación Rustup-init.exe del sitio oficial de Rust (rust-lang.org) (recuerde descargar la versión de 32 o 64 bits). correspondiente al Windows actual).

Luego ejecute el paquete de instalación directamente. El programa de instalación configura automáticamente la ruta del sistema y podrá usarlo directamente desde la línea de comando en el futuro, como el administrador de paquetes de carga.

Instalar herramientas de compilación de C++

La compilación de Rust en Windows también se basa en las herramientas de compilación de Microsoft C++. Si no las instala, se informará un error durante la compilación que indicará "link.exe". "No se puede encontrar.

Necesita descargar vs_buildtools de Microsoft VS, seleccionar las herramientas C++ y los componentes del SDK de Windows e instalarlos.

Instalar VS Code y su complemento Rust

Además, por conveniencia, generalmente se recomienda instalar VS Code y su complemento Rust:

fuente doméstica de crates-io

Configure la fuente doméstica de Rust crate Dado que la descarga doméstica oficial de crates-io es demasiado lenta e incluso puede fallar, configure primero la fuente doméstica (como ustc). /p>

En el directorio de usuarios C:\Users \CC\.cargo crea un archivo de configuración con la siguiente configuración:

Ejemplo

Primero, crea un nuevo proyecto Rust. a través de cargo:

cargo new hello -chongchong

El comando anterior creará un nuevo directorio y hello-chongchong para crear el directorio y los archivos del marco básico del proyecto.

Ingrese al directorio y use el comando --lib para crear de forma ordenada proyectos de biblioteca dependientes:

cargue nuevos enlaces --lib

Luego pase

code.

Abra el proyecto en VS Code, la captura de pantalla es la siguiente:

Modifique el archivo Cargo.toml del proyecto y agregue las siguientes dependencias. Las dependencias le dicen a Cargo eso. ahora depende de la biblioteca win recién creada.

[dependencias]

bindings = {path = "bindings"}

Ahora, en el archivo Cargo.toml en la carpeta win, agregue las dependencias de Windows de la caja, versión especificada como la última 0.9.1. Esto habilita la compatibilidad con Windows al permitir que los paquetes Cargo se descarguen, construyan y almacenen en caché.

[dependencias]

windows = "0.9.1"

[dependencias de compilación]

windows = "0.9.1"

Luego cree un nuevo archivo fuente build.rs en el directorio de enlaces e ingrese el código fuente:

// build.rs

fn main() {

windows::build!(

Windows::Win32::WindowsAndMessaging::MessageBoxA

);

}

En el código, use la macro windows::build para especificar el tipo que se usará. Puede enumerar nuevamente todas las API que deben usarse y Windows Crate generará metadatos directamente para generar los enlaces necesarios.

Luego modifique el directorio win/src al siguiente código:

windows::include_bindings!();

De esta manera, puede agregar lo siguiente código al proyecto principal main.rs En el archivo, se llama a cualquier API de Windows especificada. Aquí creamos un cuadro de diálogo de mensaje "¡Hola Chongchong!".

use enlaces::Windows::Win32::WindowsAndMessaging::{MessageBoxA, MESSAGEBOX_STYLE};

fn main() {

inseguro {

MessageBoxA(Ninguno, "¡Hola Chongchong!", "Mensaje", MESSAGEBOX_STYLE::MB_OK);

}

}

Tenga en cuenta que cualquier Las funciones Win32 y los métodos de la interfaz COM deben llamarse en modo inseguro.

Luego compile el proyecto a través de cargo build y aparecerá un cuadro de diálogo a través de cargo run.

La nueva versión de Crate viene con varios ejemplos más, que se pueden encontrar en el directorio de ejemplos del repositorio de proyectos de Windows-RS.

Resumen

Rust para Windows ha traído buenas noticias para el desarrollo y aplicación de Rust en Windows. Aunque es posible que algunas API se hayan utilizado ampliamente durante mucho tiempo, ahora con soporte oficial. puedes Ha habido grandes mejoras en la documentación, los ejemplos y la estabilidad.