2017-05-24 3 views
0

私はdylibとして別のアプリケーションに埋め込みたいRustプロジェクトを持っています。私はCargo.tomlcrate_type = ["dylib"]を設定していますが、これはcdylibにするかどうかわかりません。Rust cargo dylib clarification

私はプロジェクトをビルドすると、予想通り、それはtarget/debuglibfoo.dylibを生成するが、otool -Lを見ると、それはまたtarget/debug/deps/libfoo.dylibにリンク。別のアプリケーションでこれを使用する場合は、両方のdylibを提供する必要がありますか?

また、クレートタイプがcdylibの場合、2つのdylibも作成されますが、デープの1つはファイル名の末尾にハッシュを付けることになります。私はこれらの2つの木箱のタイプの違いが何であるか分かりません。

rustcだけで2つのdylibを得ることは避けられますが、私は貨物を使用したいと思います。他のアプリケーションでdylibとしてRustを埋め込むことをお勧めする方法は何ですか?それはもう少し研究した後

答えて

0

重要だ場合、私はMacOSの10.12に錆を使用してい

は、それがcdylibは静的に錆の依存関係を結ぶ判明し、dylibは他の錆プロジェクトと動的リンクのためです。

埋め込みについては、私が見つけたものすべてが、Rustライブラリを静的にリンクすることが推奨される方法であることを示しています。 Rustライブラリを動的に使用するには、[profile]セクションにrpath = trueを設定すると、冗長dylibの問題が解決されました。