#sf #bindings-generator #api-bindings #service-fabric

sf-rs

用于与Windows上的Service Fabric COM API交互的Rust库

3个不稳定版本

0.2.1 2023年12月15日
0.2.0 2023年12月13日
0.1.0 2023年11月26日

Windows API中排名第103

MIT许可证

7MB
151K SLoC

Rust 133K SLoC // 0.0% comments C 17K SLoC // 0.1% comments C++ 1K SLoC // 0.0% comments C# 131 SLoC // 0.2% comments Visual Studio Solution 25 SLoC

包含(静态库,365KB)InternalFabricUUID.lib,(DOS可执行文件,240KB).windows/winmd/sf.winmd,(静态库,165KB)FabricUUID.lib,(静态库,135KB)FabricUUID.lib,(静态库,195KB)InternalFabricUUID.lib,(静态库,5KB)FabricClient.lib更多

sf-rs

该包包含使用Windows原生COM API调用Service Fabric(SF)的Rust绑定。SF API通过我们从github.com/Azure/sf-c-util项目获取的IDL文件进行指定。

生成sf.winmd

第一步是从SF IDL文件构建sf.winmd文件。我们使用win32metadata工具链来完成这项工作,该工具链知道如何处理IDL文件并生成.winmd文件。已经创建了一个msbuild项目文件来完成此操作,您可以在.metadata/generate.proj中找到它。我只是遵循了博客文章"为Rust的windows包生成元数据"中的说明来编写此文件。以下是您需要执行的操作来生成(或重新生成)sf.winmd

  1. 如果您尚未安装,请使用Visual Studio Installer安装名为MSVC v143 - VS 2022 C++ ARM64/ARM64EC build tools (最新)的Visual Studio组件。如果您在未来进行此操作时,VS 2022已经成为过时的旧软件,请用当前的最新技术替换2022。

  2. 打开Visual Studio开发终端,导航到.metadata文件夹,然后运行

git submodule init --update
dotnet build

这就完成了。这将在.windows\winmd文件夹中生成sf.winmd文件。

生成Rust绑定

接下来,我们将从sf.winmd文件中生成Rust绑定。这是通过使用windows-bindgenwindows-metadata crate实现的。生成此代码位于crates/tools/api/src/main.rs。在位于仓库根目录的终端中运行以下命令以生成(或重新生成)src/bindings.rs

cargo run --package api

这将处理sf.winmd并生成bindings.rs,在编写本说明时,其长度约为132,000行。轻而易举。

依赖项

~134MB
~2M SLoC