«

使用Rust写C#能用的动态链接库

FunJoo 发布于 阅读:3438 C#笔记


(以下内容由ChatGPT4生成)
要使用 Rust 创建一个 C# 能调用的动态链接库 (DLL),你需要遵循以下步骤:

下面是具体的步骤:

1. Rust

Cargo.toml:

[package]
name = "rust_to_csharp"
version = "0.1.0"
edition = "2018"

[lib]
crate-type = ["cdylib"]

[dependencies]
libc = "0.2"

src/lib.rs:

extern crate libc;
use libc::{c_int};

#[no_mangle]
pub extern "C" fn add(a: c_int, b: c_int) -> c_int {
    a + b
}

编译Rust项目为DLL:

cargo build --release

编译完成后,你可以在 target/release 目录下找到 rust_to_csharp.dll。

2. C#

创建一个新的C#项目,并将上面生成的 rust_to_csharp.dll 复制到C#项目的输出目录。
然后在C#代码中:

using System.Runtime.InteropServices;

class Program
{
    const string DllPath = "rust_to_csharp.dll";

    [DllImport(DllPath, CallingConvention = CallingConvention.Cdecl)]
    public static extern int add(int a, int b);

    static void Main()
    {
        int result = add(2, 3);
        Console.WriteLine($"2 + 3 = {result}");
    }
}

现在,当你运行C#程序时,它会调用Rust创建的DLL并打印2 + 3 = 5。

注意:确保C#项目的平台目标与Rust项目匹配。例如,如果你使用64位Rust工具链编译的DLL,确保C#项目也设置为x64。

C# Rust