在Rust中使用多个.c源文件

时间:2014-10-06 05:46:35

标签: rust

我成功使用带有Rust(see this answer)的.c文件。如何链接多个.c文件?我已经尝试#![link_args="/c_src/*.c"]而没有运气。

- rust-demo
  - src
    - c_src
      - file1.c
      - file2.c
      - etc...
    - main.rs

编辑:

我认为更好的问题是,我怎样才能简单地将C源代码放在Rust目录中,并使用Rust的link属性&考虑到上面的例子extern(或任何其他方式)?

2 个答案:

答案 0 :(得分:3)

  

如何简单地将C源代码放入Rust目录中,并使用Rust的link属性&amp ;,直接开始使用它。 extern(或任何其他方式)

您不能只将C代码放入Rust源代码并期望它能够正常工作。正如您在其他问题的评论中所述,语法#![link_args="foo.c"]从未被计划起作用,您不应该依赖它。

唯一可以链接Rust代码(除了其他生锈代码)是一个编译库(静态或动态)。您需要将C文件编译成一个或多个库,然后才能从Rust代码中调用它们。

这样做的正确方法是在build的{​​{1}}部分添加[package]参数,因此可以调用首先将C文件构建为静态的makefile库,然后将您的Rust代码链接到它。

所有详情均在货运网站上提供:http://doc.crates.io/build-script.html

答案 1 :(得分:1)

假设您正在使用Cargo,请使用build = ["gcc ..."]添加某种脚本以将其构建到适当的库中,然后您只需要在#[link_args]中指定一件事