背景

#[link(name = "raiburari")]
extern {
   fn foo(script: *const libc::c_char,
                        cb: extern fn(* const libc::c_char) -> c_int ) }

rustcのコマンドラインでは-Lオプションがあるので、Cと同様に共有ライブラリの
パスを指定することが可能。コード中で指定したlibraiburariがどこにあっても参照できる。

しかし、Cargoを使ってこれをするやり方がなかなか分からなかった。

驚きの結果

なんと、build.rsをいうファイルを作成して、rustで標準出力にオプションの
文字列を出力するコードを書くことで、これが可能になることが分かった。

共有ライブラリの検索パスは以下のオプション

cargo:rustc-link-search

build.rsの中身

fn main() {
    println!("cargo:rustc-link-search=native=/hoge/fuga/bar/foo");
}

これで、/hoge/fuga/bar/foo配下の共有ライブラリを参照するようになる。

参考資料

    Build Script Support – Cargo Documentation

この事を学んだ結果の成果物

    https://github.com/trusterd/libtrusterd/tree/master/examples/trusterd_rs

関連投稿

    build.rsでLIBやPATH環境変数を設定せずにcargo runする – Qiita

関連記事

    • libtrusterdをRustで動かした

 

    • RustでWebカメラの映像をコマンドプロンプトに出すコマンドを作った

 

    • RustでGoのライブラリを使うときのCargoのbuild.rsの書き方

 

    2018年版、Rustで多次元配列を使うには
bannerAds