Ich versuche, ein Rust-Programm mit zu verknüpfen. Ich benutze Windows und es ist ein GCC-Binärdownload verfügbar. Ich kann es so verknüpfen, wenn ich es in dem gleichen Ordner wie mein Projekt setzen:Wie gebe ich den Linker-Pfad in Rust an?
#[link(name = ":libsoundio-1.1.0/i686/libsoundio.a")]
#[link(name = "ole32")]
extern {
fn soundio_version_string() -> *const c_char;
}
Aber ich will wirklich #[link(name = "libsoundio")]
oder sogar #[link(name = "soundio")]
, spezifizieren und dann woanders einen Linker Weg geben.
Wo kann ich diesen Pfad angeben?
Ich versuchte, den rustc-link-search
Vorschlag wie folgt:
#[link(name = "libsoundio")]
#[link(name = "ole32")]
extern {
fn soundio_version_string() -> *const c_char;
}
Und in .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"]
Aber es noch geht nur "-l" "libsoundio"
zu gcc und schlägt mit dem gleichen ld: cannot find -llibsoundio
. Fehle ich etwas wirklich offensichtlich? Die Dokumente scheinen darauf hinzuweisen, dass dies funktionieren sollte.
Vielleicht etwas, aber das fehlt mir scheint nicht zu funktionieren. Siehe meine Frage bearbeiten. – Timmmm
Versuchen Sie, das Präfix "lib" zu entfernen: '-l soundio' – Lud
Kein Effekt, es ist wie es ist nicht einmal mit der' .cargo/config'. Ich vermute, dass es etwas mit dem '.libsoundio'-Bit zu tun hat, aber es scheint keine Möglichkeit zu geben, Cargo dazu zu bringen, seine Build-Konfiguration zu drucken, so dass es schwer zu debuggen ist! – Timmmm