Я пытаюсь связать программу 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"
в НКУ и не с такой же ld: cannot find -llibsoundio
. Я пропустил что-то действительно очевидное? Документы, похоже, предполагают, что это должно сработать.
Может быть, я что-то кроме того, что не хватает, кажется, не работает. См. Мое редактирование вопроса. – Timmmm
Попробуйте удалить префикс "lib": '-l soundio' – Lud
Без эффекта, это похоже даже не на' .cargo/config'. Я подозреваю, что это как-то связано с '.libsoundio]' бит, но, похоже, нет способа заставить Cargo распечатать конфигурацию сборки, поэтому ее трудно отладить! – Timmmm