gpt4 book ai didi

rust - 链接到具有 extern "C"函数的 C++ 库

转载 作者:行者123 更新时间:2023-11-29 07:43:53 24 4
gpt4 key购买 nike

所以我正在将 Rust FFI 写入 C++ 库,该库具有一个外部“C” block ,其中包含 C 风格的函数头。以及我的低级 FFI 构建。

但是,当我在另一个项目中使用我的 FFI 时,它没有正确链接,并且我得到了对运算符 new()、delete() 等的 undefined reference 。

我的问题是:

  1. 我是不是搞砸了,因为这是 C++ 而你还不能将 Rust 链接到 C++?

  2. 使用 FFI 库的应用程序是否应该以某种方式处理链接问题,如果是,如何处理?

  3. 能否以某种方式构建我的 libsomething.a 以包含这些 C++ 组件?如果可以,如何构建?我目前使用的是 gcc crate,相当一般。

  4. 将您自己的解决方案放在这里

最佳答案

您需要动态链接到 libstdc++ 以获取您的 C++ 代码所需的符号。您可以在构建脚本中指示 rustc 这样做:

extern crate gcc;
use std::default::Default;

fn main() {
gcc::compile_library("libhello.a", &Default::default(), &["cpp/hello.cpp"]);
println!("cargo:rustc-flags=-l dylib=stdc++");
}

See full example on github

有关构建脚本的更多信息,请参阅 the Cargo guide .

关于rust - 链接到具有 extern "C"函数的 C++ 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28060294/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com