所以我有一个头库( .h文件的目录),我需要在rust代码中使用它。为了让它工作,我一直在寻找各种板条箱来帮助我实现这一点,似乎bindgen是最有前途的选择。我遵循了bindgen的文档,创建了一个wrapper.h和一个build.rs文件。在build.rs文件中,我列出了所有需要的函数,并且文档中提到的链接参数被指定为println! ("cargo:rustc-link-lib=C/complete path to my header files");。但是,在执行cargo构建时,此操作会失败,并显示以下错误:
error: linking with link.exe failed: exit code: 1181我还没能找到一个解决方案。任何帮助或建议都是非常感谢的。
发布于 2020-07-13 08:08:19
rustc-link-lib指令仅适用于.a/.so/.dll,不能用于.h或.rs文件。这在这里是完全不合适的。
如果您让build.rs脚本写入到由std::env::var("OUT_DIR") path指定的目录中,那么您的主库代码可以使用以下命令动态地包含它:
include!(concat!(env!("OUT_DIR"), "/temp_file_built_by_build_dot_rs.rs"));或者,根本不需要为build.rs而烦恼。使用命令行绑定并将生成的.rs文件作为模块包含在项目中(就像常规的源代码文件一样)。
https://stackoverflow.com/questions/62672905
复制相似问题