我想鏈接一個Rust程序libsoundio。我正在使用Windows,並有可用的GCC二進制下載。我喜歡這個鏈接,如果我把它放在同一個文件夾我的項目:如何在Rust中指定鏈接器路徑?
#[link(name = ":libsoundio-1.1.0/i686/libsoundio.a")]
#[link(name = "ole32")]
extern {
fn soundio_version_string() -> *const c_char;
}
但我真的想指定#[link(name = "libsoundio")]
甚至#[link(name = "soundio")]
,然後提供一個鏈接路徑別的地方。
我可以在哪裏指定路徑?
我試過rustc-link-search
建議如下:
#[link(name = "libsoundio")]
#[link(name = "ole32")]
extern {
fn soundio_version_string() -> *const c_char;
}
而且在.cargo/config
:
[target.i686-pc-windows-gnu.libsoundio]
rustc-link-search = ["libsoundio-1.1.0/i686"]
rustc-link-lib = ["libsoundio.a"]
[target.x86_64-pc-windows-gnu.libsoundio]
rustc-link-search = ["libsoundio-1.1.0/x86_64"]
rustc-link-lib = ["libsoundio.a"]
但它仍然只傳遞"-l" "libsoundio"
到gcc和失敗一樣ld: cannot find -llibsoundio
。我錯過了真正明顯的東西嗎?文件似乎表明這應該工作。
也許我失去了一些東西,但似乎並沒有工作。看到我的問題編輯。 – Timmmm
嘗試刪除前綴「lib」:'-l soundio' – Lud
沒有效果,就像它甚至沒有使用'.cargo/config'。我懷疑這與'.libsoundio]'有點關係,但似乎沒有辦法讓Cargo打印它的構建配置,所以很難調試! – Timmmm