在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是更好的方法