#net #structs #function #exported #languages

rnet

轻松从C#或其他.NET语言调用Rust

4个版本 (2个破坏性更新)

0.3.1 2023年11月15日
0.3.0 2023年11月15日
0.2.0 2021年11月22日
0.1.0 2021年11月9日

#878 in Rust模式


用于rnet-gen

MIT/Apache

58KB
1.5K SLoC

rnet

轻松从C#或其他.NET语言调用Rust。

用法

  1. rnet::root!();添加到您的crate中。
  2. 在所有要与其他.NET共享的结构上使用#[derive(Net)]
  3. #[net]属性应用于任何从.NET可调用的独立函数。
  4. 将Rust项目构建为cdylib
  5. 为您的项目生成C#绑定
    cargo install rnet-gen
    rnet-gen "<path to .dll/.so/.dylib>" > "<path to generated file.cs>"
    
  6. 将C#文件包含在您的.NET项目中。
  7. 将编译好的Rust库链接到您的.NET项目,并将其设置为"如果较新则复制"。
  8. 可选:配置上述步骤以作为预构建步骤自动运行。

对于C#以外的语言,您需要将导出的C#文件构建为其自己的类库,然后从任何.NET语言的项目中添加对该类库的引用。


lib.rs:

rnet

轻松从C#或其他.NET语言调用Rust。

用法

  1. rnet::root!();添加到您的crate中。
  2. 在所有要与其他.NET共享的结构上使用#[derive(Net)]
  3. #[net]属性应用于任何从.NET可调用的独立函数。
  4. 将Rust项目构建为cdylib
  5. 为您的项目生成C#绑定
    cargo install rnet-gen
    rnet-gen "<path to .dll/.so/.dylib>" > "<path to generated file.cs>"
    
  6. 将C#文件包含在您的.NET项目中。
  7. 将编译好的Rust库链接到您的.NET项目,并将其设置为"如果较新则复制"。
  8. 可选:配置上述步骤以作为预构建步骤自动运行。

依赖项

~1.5–2.2MB
~48K SLoC