0
我希望使用Crystal調用Rust dylib中定義的各種函數。我已經閱讀了手冊,但我無法理解它。我如何正確包含並調用這個dylib?我使用CLI標誌是否錯誤?如何使用Crystal從dylib調用函數?
這裏的水晶代碼:
@[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)
我使用this repo編譯一個dylib
。代碼編譯細到一個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!()
}
沒有很難幫助的錯誤信息您。 – RX14
可能你必須指定dylib的完整路徑,除非它已經在默認鏈接器搜索路徑中(在這種情況下,你將它鏈接爲'my_dylib'而不是'libmy_dylib') – RX14