首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >链接在rust bindgen中失败

链接在rust bindgen中失败
EN

Stack Overflow用户
提问于 2020-07-01 16:39:35
回答 1查看 381关注 0票数 0

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

代码语言:javascript
复制
error: linking with link.exe failed: exit code: 1181

我还没能找到一个解决方案。任何帮助或建议都是非常感谢的。

EN

回答 1

Stack Overflow用户

发布于 2020-07-13 08:08:19

rustc-link-lib指令仅适用于.a/.so/.dll,不能用于.h.rs文件。这在这里是完全不合适的。

如果您让build.rs脚本写入到由std::env::var("OUT_DIR") path指定的目录中,那么您的主库代码可以使用以下命令动态地包含它:

代码语言:javascript
复制
include!(concat!(env!("OUT_DIR"), "/temp_file_built_by_build_dot_rs.rs"));

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62672905

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档