0

所以我有一个头库(.h 文件的目录),我需要在我的 rust 代码中使用它。为了让这个工作,我一直在寻找各种板条箱来帮助我实现这个,看起来 bindgen 是最有希望的选择。我遵循了 bindgen 的文档并创建了一个 wrapper.h 和一个 build.rs 文件。在 build.rs 文件中,我已将所有需要的函数列入白名单,文档中提到的链接参数指定为println! ("cargo:rustc-link-lib=C/complete path to my header files");. 但是在进行货物构建时会失败并出现以下错误:

error: linking with link.exe failed: exit code: 1181

我无法找到解决方案。非常感谢任何帮助或建议。

4

1 回答 1

0

rustc-link-lib指令仅适用于.a//并且不能与或.so文件一起使用。这里完全不合适。.dll.h.rs

如果您将build.rs脚本写入std::env::var("OUT_DIR")路径指定的目录,则您的主库代码可以动态包含它:

include!(concat!(env!("OUT_DIR"), "/temp_file_built_by_build_dot_rs.rs"));

或者,根本不要打扰build.rs。使用命令行 bindgen 并将生成.rs的文件作为模块包含在您的项目中(就像常规源代码文件一样)。

于 2020-07-13T00:08:19.140 回答