C から Rust の関数をコールする

Rust に関数を実装し、それを C から呼び出します。

あまり引数や戻り値を考えなくても良さそうな関数を Rust で定義する

#![crate_type = "dylib"]

#[no_mangle]
pub extern fn sayGreeting() {
   println!("Hello, world.");
}

#[no_mangle]
pub extern fn rust_add(x: i32, y: i32) -> i32 { x + y }

Rust のコードをコンパイルする

$ rustc rustcode.rs
$ ls .
librustcode.so rustcode.rs

Rust の関数をコールする C のコードを書く

#include <stdio.h>

void sayGreeting(void);
int rust_add(int x, int y);

int main(int argc, char **argv)
{
    sayGreeting();

    printf("result: %d\n", rust_add(10, 15));

    return 0;
}

C のコードをコンパイルする

$ gcc -o main sample.c -L. -lrustcode

実行する

$ LD_LIBRARY_PATH=./ ./main
Hello, world.
result: 25

お試しということで、簡単なコードで動作確認をしてみました。
次は文字列型とかどういう感じになるんだか、気になるところ。

Contents