#x-plane #bindings #sdk #version #plugin #low-level #set

sys xplane-sys

针对X-Plane插件SDK的底层绑定

7个稳定版本

4.0.109 2024年2月29日
4.0.104 2024年2月28日
4.0.103 2023年11月25日
4.0.102 2023年10月9日
4.0.101 2023年7月31日

#4 in #x-plane

Download history 49/week @ 2024-04-02 212/week @ 2024-04-23 14/week @ 2024-04-30 55/week @ 2024-07-02

55 每月下载量
用于 xplane

MIT/Apache

395KB
2K SLoC

C 1.5K SLoC // 0.0% comments C++ 550 SLoC Rust 331 SLoC // 0.0% comments

包含 (静态库, 55KB) sdk/xplm/lib/XPLM_64.lib, (静态库, 11KB) sdk/xpwidgets/lib/XPWidgets_64.lib

docs.rs GitHub Workflow Status (with event)

xplane-sys: X-Plane插件SDK的Rust绑定

此库为X-Plane插件SDK提供Rust绑定。

SDK版本

此crate基于SDK版本4.0.1 (XPLM400),支持X-Plane 12.04及更高版本。使用此crate制作的插件可以与较早版本的X-Plane一起使用,前提是设置了正确的特性门。特性门如下

  • XPLM400 -- X-Plane 12.04及更高版本。
  • XPLM303 -- X-Plane 11.50及更高版本。
  • XPLM301 -- X-Plane 11.20及更高版本。
  • XPLM300 -- X-Plane 11.10及更高版本。
  • XPLM210 -- X-Plane 10.20及更高版本。 (实际上10.00及更高版本,但此crate禁止32位插件。)

与Laminar提供的X-Plane C SDK不同,此crate会自动推断较旧版本,因此无需定义所有版本直到所需版本。如果运行时对SDK版本级别进行检查,则可以使用请求的新版本之后的SDK版本的功能。在此点上,如果版本足够高,则可以请求所需函数的指针。这已在X-Plane文档中概述。这允许支持一系列版本,同时如果存在,还可以访问新功能。

一些较早SDK版本的功能已被弃用。此crate不提供访问它们的方法。实际上,如果您正在使用低于XPLM303的特性门,那么您是疯狂的。特性门已包含在内,但X-Plane 11.50于2020年发布,因此大多数用户应该拥有它,即使他们不在X-Plane 12上。

此crate将随着X-Plane SDK的更新而更新,并将具有相同的版本号。(除非在特殊情况下)

文档

类型和函数在X-Plane插件API网站上进行了文档说明。

编译和链接

以下目标受X-Plane支持的约束

  • x86_64-pc-windows-msvc
  • x86_64-apple-darwin
  • aarch64-apple-darwin
  • x86_64-unknown-linux-gnu

在 macOS 和 Windows 上,插件必须与提供 SDK 函数存根实现的库进行动态链接。此包包含这些库,并告诉 Cargo 链接它们。

Linux 上的存根

此包包含为 Linux 生成和链接库存根的实验性功能。这很有用,这样插件就可以构建,而无需留下未定义的符号,这样其他依赖项可能会悬空。

可以通过功能标志 stub-linux 启用此功能。

这应该能够在即将推出的 X-Plane 12.1.0 上无缝工作,然而在之前的版本中,需要进行一些更改才能使其工作。

cd X-Plane/Resources/plugins
patchelf --set-soname XPLM_64.so XPLM_64.so
patchelf --set-soname XPWidgets_64.so XPWidgets_64.so

在 X-Plane 12.1.0 之前,XPLM 和 XPWidgets 没有构建 SONAME。这些命令修复了这一点。

免责声明

此项目的当前维护者是一位明确支持乌克兰对抗俄罗斯、反对任何和所有侵犯人权行为的跨性别女同性恋。

如果你不使用此项目,那么你应该

  • 不明确支持 LGBTQ+ 人口,包括跨性别个体。
  • 认为 LGBTQ+ 人士“不应该公开展示”。
  • 支持“去除 T”,TERF 或类似运动。
  • 认为恋童癖属于 LGBTQ+,无论是你想让它属于,还是你认为该社区接受它。它不接受。
  • 拒绝使用人们首选的名字、代词和性别标签来称呼和指称人们。
  • 不支持乌克兰反抗俄罗斯压迫者的斗争。
  • 支持任何极右翼政党或政治家(包括弗拉基米尔·普京、共和党、AfD、FdI 和类似政党)。

我无法阻止你,但任何被发现符合上述标准并与项目互动的人将被阻止进一步互动。

许可

根据以下任一项许可发布

供您选择。

SDK 文件夹中的文件根据单独的许可证提供,许可证在 XPlaneSDK/license.txt 中提供。

贡献

除非你明确说明,否则你提交的任何有意包含在此作品中的贡献都将根据上述条款双许可,没有任何额外的条款或条件。

单元测试

此包的 mockall 功能旨在在测试使用此包的包时启用。所有功能都将使用 mockall 进行模拟。此包目前公开暴露 mockall = "~0.12"

依赖项

~0.3–2.6MB
~53K SLoC