C# 调用 Rust 编写的 dll 之二:输入输出简单数值

C# 调用 Rust 编写的 dll 之二:输入输出简单数值

文中所有的程序运行环境为:windows 10 64bit,Net 5.0,Rust 1.51;乌龙哈里 2021-05-05

接上文《C# 调用 Rust 编写的 dll 之一:创建 dll》

一、输入输出 int

1、输入 int:

rust lib.rs 中写入

#[no_mangle]//不写这个会把函数名编译成其他乱七八糟的
pub extern fn input_int(n:i32){
    println!("rust dll get i32: {}",n);
}

c# 调用

        [DllImport("D:\\LabRust\\Learn\\ln_dll\\target\\release\\rustdll.dll",
        EntryPoint = "input_int",
        CallingConvention = CallingConvention.Cdecl)]
        public static extern void InputInt(int n);
        static void TestInputInt(int n)
        {
            InputInt(n);
        }

在 main() 中修改:

        static void Main(string[] args)
        {
            //TestHelloRust();
            TestInputInt(100);

            Console.WriteLine("Hello C# !");
            Console.Read();
        }

结果:

/*
rust dll get i32: 100
Hello C# !
*/

2、输出 int

rust 写入函数:

#[no_mangle]//不写这个会把函数名编译成其他乱七八糟的
pub extern fn output_int(n:i32)->i32{
    println!("Rust Dll get i32: {}",n);
    n+100
}

c# 调用:

        [DllImport("D:\\LabRust\\Learn\\ln_dll\\target\\release\\rustdll.dll",
        EntryPoint = "output_int",
        CallingConvention = CallingConvention.Cdecl)]
        public static extern int OutputInt(int n);
        static int TestOutputInt(int n)
        {
            return OutputInt(n);
        }
        static void Main(string[] args)
        {
            //TestHelloRust();
            //TestInputInt(100);
            Console.WriteLine($"output:{TestOutputInt(100)}");

            Console.WriteLine("Hello C# !");
            Console.Read();
        }

结果:

/*
Rust Dll get i32: 100
output:200
Hello C# !
*/
上一篇:the rust book 的简单入门笔记


下一篇:todolist