J'essaye de relier un programme de rouille avec libsoundio. J'utilise Windows et un téléchargement binaire GCC est disponible. Je peux relier comme ça si je le mets dans le même dossier que mon projet:Comment spécifier le chemin de l'éditeur de liens dans Rust?
#[link(name = ":libsoundio-1.1.0/i686/libsoundio.a")]
#[link(name = "ole32")]
extern {
fn soundio_version_string() -> *const c_char;
}
Mais je veux vraiment préciser #[link(name = "libsoundio")]
ou même #[link(name = "soundio")]
, puis fournir un chemin de liaison ailleurs.
Où puis-je spécifier ce chemin?
J'ai essayé la suggestion rustc-link-search
comme suit:
#[link(name = "libsoundio")]
#[link(name = "ole32")]
extern {
fn soundio_version_string() -> *const c_char;
}
Et .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"]
Mais il passe encore que "-l" "libsoundio"
à gcc et échoue avec le même ld: cannot find -llibsoundio
. Est-ce que je manque quelque chose de vraiment évident? Les docs semblent suggérer que cela devrait fonctionner.
Peut-être que je manque quelque chose, mais cela ne semble pas fonctionner. Voir ma question éditer. – Timmmm
Essayez de supprimer le préfixe "lib": '-l soundio' – Lud
Aucun effet, c'est comme s'il n'utilisait même pas' .cargo/config'. Je suppose que c'est quelque chose à voir avec le bit '.libsoundio]' mais il ne semble pas y avoir de moyen pour que Cargo imprime sa config de construction donc il est difficile de déboguer! – Timmmm