#ffi #c #gcc #nightly #rustc #required #embed

已撤回 c_rs

在您的Rust代码中嵌入C代码。需要GCC和rustc nightly。

1 个不稳定发布

使用旧的Rust 2015

0.1.9 2022年5月14日

#13 in #gcc

MPL-2.0 许可证

27KB
657

状态:正常,v0.1.9

这是什么?

认识 c_rs。它是已不再维护的项目的一个分支。

这个crate允许您在Rust中直接编写C代码。

需要GCC和rustc nightly!

那么我该如何使用它呢?

在Cargo.toml中指定

[build-dependencies.c_rs]
git = "https://github.com/mrMiiao/c_rs"
version = "*"
features = ["build"]

[dependencies.c_rs]
git = "https://github.com/mrMiiao/c_rs"
version = "*"
features = ["macro"]

并将此放入Build.rs

extern crate c_rs;
fn main()
{
    c_rs::build("src/main.rs", "crate_name", |cfg|
    {
        // cfg is a gcc::Config object. You can use it to add additional
        // configuration options to the invocation of the C compiler.
    });
}

main.rs示例

extern crate c_rs;
use c_rs::c;
use c_rs::ctypes::_void;

c!{
    #include <stdio.h>
    raw{
        void hello_world() {
            puts("Hello, World!");
        }
    }
}

extern "C" {
    fn hello_world() -> _void;
}

fn main() {
    unsafe{
        hello_world();
    }
}

更多示例请见这里

目标

  • 修复头文件链接错误
  • 使用"crate"添加本地头文件支持
  • 添加ctypes

依赖项

~0.7–1.1MB
~25K SLoC