Subscribe to RSS Feed ログイン

オーガニック・ウェルス

Saturday
2018年4月21日

Rustから自作共有ライブラリを呼び出す

Rustから呼び出せる共有ライブラリを作成する方法をまとめます。コンパイラにはgccを使用します。

<myfunc.h>

void sumTotal (int num);

<myfunc.c>

#include <stdio.h>
#include "myfunc.h"

void sumTotal (int num)
{
	int sum = 0, i;
	for (i = 1; i <= num; i++) {
		sum = sum + i;
	}
	printf("sum = %d\n", sum);
}

上記ファイルからライブラリファイルを生成します。


$ gcc -shared myfunc.c -o libmyfunc.so
$ sudo cp libmyfunc.so /usr/local/lib/rustc/i686-unknown-linux-gnu/lib/

ライブラリを用意したら次はRustのプログラムを作成します。

<main.rs>

use std;
#[link_name = "myfunc"]
native mod myfunc {
  fn sumTotal(arg :ctypes::c_int);
}
fn main(){
	myfunc::sumTotal(10);
	myfunc::sumTotal(20);
	myfunc::sumTotal(30);
}

いつもと同じようにコンパイルします。

$ rustc main.rs
$ ./main

実行結果

sum = 55
sum = 210
sum = 465

そこまで難しいことはしないので良かったです。

参考:

gccを用いたCの共有ライブラリの作り方 – 睡眠不足?!

11.1 Native modules

コメント(0)続きを読む