使用多个.c源文件与Rust

4

我已经成功地使用了一个带有Rust的.c文件(请参见此答案)。如何链接多个.c文件?我已经尝试过#![link_args="/c_src/*.c"],但没有成功。

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

编辑:

我认为一个更好的问题应该是,如何通过使用Rust的link属性和extern(或任何其他方式),简单地将C源代码放入我的Rust目录中,并在上述示例的基础上直接开始使用它?

2个回答

3
您不能仅仅将C代码放入Rust源代码并期望其能够工作。如您在其他问题的评论中所说,语法#![link_args="foo.c"]从未被计划为有效,并且您不应该依赖它。
除了其他Rust代码以外,Rust代码唯一可以链接的是已编译的库(静态或动态)。您需要将C文件编译为一个或多个库,然后才能从Rust代码中调用它们。
正确的方法是在[package]部分的Cargo.toml中添加build参数,您可以调用makefile将C文件首先构建为静态库,然后将Rust代码链接到其上。
所有详细信息均在cargo网站提供:http://doc.crates.io/build-script.html

1
假设您正在使用Cargo,请添加某种脚本,其中包含build = ["gcc ..."],以将它们构建为适当的库,然后您只需要在#[link_args]中指定一个东西。

是的,我正在使用Cargo。请添加一些带有build = ["gcc ..."]的脚本到... 你能再具体点吗?此处是否有文档记录? - goo
在货物网站上:http://crates.io/native-build.html - Levans
1
@goo,你可以在这里找到如何构建非Rust依赖项的信息(http://crates.io/native-build.html)。 - Vladimir Matveev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接