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

标签 rust

<分区>

我成功地将 .c 文件与 Rust ( see this answer ) 结合使用。如何链接多个 .c 文件?我已经尝试过 #![link_args="/c_src/*.c"] 但没有成功。

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

编辑:

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

最佳答案

how can I simply drop the C source code in my Rust directory and start using it directly by using Rust's link attribute & extern (or any other way)

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

Rust 代码唯一可以链接的东西(其他 Rust 代码除外)是编译库(静态或动态)。在能够从 Rust 代码中调用它们之前,您需要将 C 文件编译成一个或多个库。

这样做的正确方法是在 Cargo.toml[package] 部分添加一个 build 参数,这样您就可以调用一个 makefile,它首先将您的 C 文件构建到一个静态库中,然后将您的 Rust 代码链接到它。

cargo 网站上提供了所有详细信息:http://doc.crates.io/build-script.html

关于rust - 在 Rust 中使用多个 .c 源文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26210607/

相关文章:

rust - 工作区在 Rust 中提供两种不同的行为

rust - 优化级别 `-Os` 和 `-Oz` 在 Rust 中有什么作用?

rust - 匹配一只 ARM 中的两个枚举变体,使用 Option? 绑定(bind)一个变体的字段?

rust - 如何在不使用克隆的情况下迭代向量并比较元素以防止借用错误

rust - 如何使用本地未发布的箱子?

rust - 操作二维字符串向量时的最佳实践是什么?

rust - 我如何告诉编译器我的函数像 process::exit() 一样终止了程序?

rust - 如何替换 .txt 文件中的单词

rust - 如何编写不拥有(或不消耗)迭代器所有权的函数? [复制]

rust - 如何在循环内覆盖可变字符串?