2017-05-24 45 views
0

我有一個Rust項目,我想嵌入另一個應用程序作爲dylib。我有crate_type = ["dylib"]設置在我的Cargo.toml中,但我不確定這是否應該是cdylib鐵鏽貨物dylib澄清

當我生成項目,它產生target/debug如預期libfoo.dylib,但看着otool -L還鏈接針對target/debug/deps/一個libfoo.dylib。如果我打算在另一個應用程序中使用它,我是否必須提供這兩個dylib?

另外,當箱子類型爲cdylib時,它也會生成兩個dylib,但是deps中的一個將在文件名末尾加上一個哈希。我不確定這兩個箱子類型之間有什麼區別。

我可以避免使用rustc來獲得兩個dylib,但是我想使用貨物。在其他應用程序中將Rust作爲dylib嵌入的推薦方式是什麼?

我使用防鏽在MacOS 10.12,如果這是顯著

回答

0

了些研究後,事實證明cdylib靜態鏈接鏽的依賴,並dylib是與其他防鏽項目動態鏈接。

至於嵌入,我發現的一切都表明靜態鏈接Rust庫是推薦的方法。爲了動態使用Rust庫,在我的[profile]部分中設置rpath = true解決了冗餘dylib問題。