Je souhaite appeler les différentes fonctions définies dans un dylib Rust en utilisant Crystal. J'ai parcouru le manuel, mais je n'ai pas pu le comprendre. Comment puis-je inclure et appeler correctement ce dylib? Suis-je en utilisant les drapeaux CLI mal?Comment appeler des fonctions d'un dylib en utilisant Crystal?
Voici le code cristal:
@[Link("libmy_dylib")]
lib MyDylib
# In C: double cos(double x)
# In Rust: print_number(x:i32)
fun print_number(value : Int32)
end
MyDylib.print_number(10)
Je compilé une dylib
en utilisant this repo. Le code compile bien à un libmy_dylib.dylib
:
extern crate libc;
use libc::uint32_t;
#[no_mangle]
pub extern "C" fn hello() {
println!("Hello from Rust!");
}
#[no_mangle]
pub extern "C" fn print_number(x: i32) {
println!("x is: {}", x);
}
#[no_mangle]
pub extern "C" fn addition(a: uint32_t, b: uint32_t) -> uint32_t {
let c = a + b;
println!("Sum : {}", c);
return a + b;
}
#[allow(dead_code)]
pub extern "C" fn fix_linking_when_not_using_stdlib() {
panic!()
}
Sans un message d'erreur, il est difficile d'aider toi. – RX14
Il est cependant probable que vous deviez spécifier le chemin d'accès complet au dylib, à moins qu'il ne soit déjà dans les chemins de recherche de l'éditeur de liens par défaut (auquel cas vous le liez comme 'my_dylib' pas' libmy_dylib') – RX14