c:\>rustc --version rustc 1.2.0-nightly (613e57b44 2015-06-01) (built 2015-06-02)今回のは特にfeature使ってないから1.0でいけるかな?
DLLの作り方
まずプロジェクトを作る。cargo new rustdlltest
Cargo.tomlを書き換えて、[lib]を作る。詳しくはhttp://doc.crates.io/manifest.htmlを参照。
lib.rsに、no_mangleとextern "C"をつけて、関数を記述する。
詳しくは、Rust bookの「Foreign Function Interface」を参照。
あとは、
cargo buildか
cargo build --releaseで、target\debugあるいはtarget\releaseにfoo.dllができている。
Dependency Walkerで見てみると、いろいろな関数がexportされているが、その中で指定したhelloがexportされていることがわかる。
呼んでみる
楽なのでC#から呼んでみるには、こんな感じ。結果はこう:
>RustLibSample.exe A negative count is not supported. Result for -1: False Hello, World: 0 Hello, World: 1 Hello, World: 2 Result for 3: True
問題ない。boolってなによと思ってintにしてみたら、0と1らしい。
0 件のコメント:
コメントを投稿