在Rust中指定FFI库链接路径的不同方式有哪些?
以下面的代码为例:在Rust中指定FFI库链接路径的不同方式有哪些?,rust,extern,ffi,Rust,Extern,Ffi,以下面的代码为例: extern crate libc; #[link(name = "adder")] extern { fn double_input(input: libc::c_int) -> libc::c_int; } fn main() { let input = 4; let output = unsafe { double_input(input) }; println!("{} * 2 = {}", input, output); }
extern crate libc;
#[link(name = "adder")]
extern {
fn double_input(input: libc::c_int) -> libc::c_int;
}
fn main() {
let input = 4;
let output = unsafe { double_input(input) };
println!("{} * 2 = {}", input, output);
}
#[link(name=“adder”)]
是否应包含指向.o/a/.h文件的相对路径?例如,它应该是#[link(name=“../adderlib/adder”)]
?有没有其他方法告诉编译器加法器在哪里?如果您需要控制库是如何找到或链接到您的锈代码的,您应该通过一个。如果您需要控制库是如何找到或链接到您的锈代码的,您应该通过一个。第一个问题的答案是肯定的!如果您的lib文件是libfoo.o
,#[link(name=“foo”)
在您的代码中就足够了
它将与位于当前工作路径和系统库路径中的库文件相关。(我在任何文档中都找不到,但我曾经成功地创建了它)。您可以使用
rustc-lxx-lxx
指定路径。将货物与a一起使用是一种更好的方法。第一个问题的答案是肯定的!如果您的lib文件是libfoo.o
,则代码中的#[link(name=“foo”)
就足够了。有关详细信息,请参阅
它将与位于当前工作路径和系统库路径中的库文件相关。(我在任何文档中都找不到,但我成功地创建了它)。您可以使用rustc-l XX-l XX
指定路径。使用Cargo with a是更好的方法