13个版本
0.8.7 | 2024年5月20日 |
---|---|
0.8.6 | 2023年12月20日 |
0.8.4 | 2023年7月17日 |
0.8.2 | 2023年2月3日 |
0.6.0 | 2022年10月25日 |
#268 in 数据库接口
120 每月下载量
用于 2 crates
1MB
21K SLoC
oo-bindgen
Rust的面向对象绑定生成器。
许可证
根据您的选择,在MIT或Apache v2许可证的条款下授权。
工作流程
- 首先,您编写Rust库,不考虑绑定。
- 然后,您编写C FFI到您的Rust库,考虑到面向对象语言将如何与之交互。您还确保尽可能保护Rust库与外部C世界之间的接口。
- 您定义一个通用的面向对象的"模式",该模式使用C FFI与您的库交互。
- 您使用读取先前定义的"模式"的生成器在目标语言中生成绑定,生成易于使用、惯用和可移植的代码。
- 您在生成的语言中编写单元测试,以确保一切按预期工作。
目录
oo-bindgen
: 构建您的库的面向对象表示的主库。tests
: 包含一个示例foo-ffi
库和相关的foo-bindings
面向对象库定义。它在每个支持的语言中构建相同的库。每种语言都编写了大量的单元测试,以检查生成的绑定是否按预期工作。
C绑定
编译由oo-bindgen生成的库的CMakeLists.txt的最小示例如下
cmake_minimum_required(VERSION 3.8)
project(my_awesome_project LANGUAGES C)
# Find the foo library generated by oo-bindgen
set(CMAKE_PREFIX_PATH ${CMAKE_CURRENT_LIST_DIR}/foo/cmake)
find_package(foo REQUIRED)
# Add your awesome project with a dependency to foo
add_executable(my_awesome_project main.c)
target_link_libraries(my_awesome_project PRIVATE foo)
# Copy the DLL/.so after build
add_custom_command(TARGET my_awesome_project POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:foo> $<TARGET_FILE_DIR:my_awesome_project>
)
.NET绑定
- 创建一个新的本地 NuGet 首源。为此,在某个位置创建一个空目录,然后运行以下命令:
nuget sources add -Name my-nuget-feed -Source /my-nuget-feed
。 - 使用以下命令将生成的 NuGet 包添加到其中:
nuget add foo.0.1.0.nupkg -Source /my-nuget-feed
。 - 在您的项目中添加对包的依赖。您可以执行以下命令:
dotnet add MyAwesomeProject package foo
,或者通过 Visual Studio 界面添加。它应该在您的.csproj
文件中添加一行,如下所示:<PackageReference Include="foo" Version="0.1.0" />
Java 绑定
- 使用以下命令将 JAR 安装到您的本地 Maven 仓库中:
mvn org.apache.maven.plugins:maven-install-plugin:3.0.0-M1:install-file -D"file=foo-0.1.0.jar"
- 使用以下命令在项目中添加依赖项:
<dependency>
<groupId>io.stepfunc</groupId>
<artifactId>foo</artifactId>
<version>0.1.0</version>
</dependency>
依赖项
~6.5–10MB
~183K SLoC