Ich möchte die verschiedenen Funktionen, die in einer Rust-Dylib definiert sind, mit Crystal aufrufen. Ich habe das Handbuch durchgelesen, aber ich konnte es nicht verstehen. Wie kann ich diesen Dylib richtig einbeziehen und aufrufen? Verwende ich die CLI-Flags falsch?So rufen Sie Funktionen von einer Dylib mit Crystal auf?
Hier ist der Kristall-Code:
@[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)
ich ein dylib
this repo mit zusammengestellt. Der Code kompiliert fein zu einem 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!()
}
Ohne eine Fehlermeldung zu drucken, es ist schwer zu helfen Sie. – RX14
Es ist wahrscheinlich, dass Sie den vollständigen Pfad zum dylib angeben müssen, es sei denn, es befindet sich bereits in den Linker-Suchpfaden (in diesem Fall verknüpfen Sie es als 'my_dylib' und nicht' libmy_dylib') – RX14