问题标签 [rust-bindgen]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3516 浏览

rust - 尝试 Bindgen 教程时看到 bzlib.h 未找到

我知道有一个类似的帖子,但我关注了它,我仍然看到这个问题,所以我想我会再问一次对不起。我下载了 bbindgen-tutorial-bzip2-sys 并尝试运行它,但出现以下错误

另一个用户建议降级 .toml 中的 Bindgen 版本,我试过了,但我仍然看到问题,我还验证了 bzip2 已安装。

是否有与 Bindgen 一起使用的已知 clang 版本?

谢谢

-------------------------------------------------- - - -更新 - - - - - - - - - - - - - - - - - - - - - - ----------------------

因此,我安装了 dev bzip 文件,并通过添加 LD_LIBRARY_PATH 的路径然后使用 ldconfig 进行更新来验证该库是否位于 ld 查看的文件夹中。我现在可以在运行 CARGO BUILD 时进行编译,

但是现在当我尝试使用 CARGO TEST 运行程序时,按照教程

https://rust-lang.github.io/rust-bindgen/print.html#include-the-generated-bindings-in-srclibrs

我现在收到以下错误:

我发现一个帖子似乎有同样的问题:

https://dev.to/rrampage/cargo-refused-to-build-my-project---a-rust-debugging-story-25e9

他们通过添加一个 config.toml 文件并指定了链接器来修复它,我尝试了这个并且仍然得到同样的错误。关于我可以检查什么的任何想法我有点卡在这个问题上。

我还检查了从网站下载的 bzip2 开发文件:

https://www.sourceware.org/bzip2/

我注意到没有名为 bz2 的文件,但有一个 libbz2.def 和一个 libbz2.dsp 文件,我的 ld 是否可能错误地从名称中删除了“lib”?

0 投票
0 回答
885 浏览

rust - rust bindgen unaligned tcache chunk 错误

我正在为 rust 中的 avahi lib 绑定​​,我遇到了运行时错误:

错误代码:

我使用这个这个例子作为参考,我让它在 C 中工作,所以我认为错误一定来自绑定。我也不确定这个错误是什么。

我究竟做错了什么?

0 投票
1 回答
345 浏览

objective-c - Rust bindgen clang 错误,此 __builtin_neon 函数的常量不兼容

尝试为 Obj-C++ 标头生成绑定,该标头是具有 rust bindgen 的 Superpowered 跨平台音频库的一部分。

我在 Catalina 10.15.6,

我被这个错误困住了。搜索了很多,但似乎很少见。

我曾尝试使用 Xcode App bundle 中提供的 clang 进行尝试,但无法做到。

该库在 Xcode 中构建良好,我在那里没有遇到同样的错误。

标题:

构建.rs:

Clang 错误:

卡在这里,有什么想法吗?

在这里找到这个:

最新消息 :) :

--target=armv7-apple-ios构建良好。 --target=arm64-apple-ios有错误。

我已经更新到 Xcode 12.0,将尝试报告。

0 投票
1 回答
430 浏览

c - Rust bindgen 找不到特定于平台的库?

我正在尝试将我的简单应用程序从 C 移植到 Rust。它只在我的 Mac 上运行,只有 Mac 上的库。这是 C 代码中失败部分的简化版本

这段代码可以简单地调用编译gcc debug.c,它工作正常。

然后我将 .h 和 .c 添加到我的 rust 项目中,并指定了如下所示的 bindgen

并且main函数没有其他功能,只是暂时测试一下日志:

该程序因以下错误而失败:

我不确定为什么会失败,但我发现如果我删除整个 unsafe 块(不调用函数),编译将起作用。但是有人可以向我解释我做错了什么吗?是否需要添加一些内容才能使其编译?

非常感谢!

0 投票
1 回答
1575 浏览

rust - 使用 Rust bindgen 链接头文件的问题

根据https://rust-lang.github.io/rust-bindgen/tutorial-3.html上的 Rust bindgen 教程,我正在尝试为现有的 C 头文件生成 FFI。但是,我无法链接头文件。

https://github.com/studersi/rust-test-apache上的存储库包含重现问题所需的所有文件,包括包含必要命令的 README 文件。最相关的文件列在问题的末尾。

我正在使用 Docker 容器来构建项目(请参阅下面的 Dockerfile)。C 头文件是从 Internet 下载的,并放在子目录中downloads/

链接器的包含(参见下面的 build.rs)基于包含工具,用于根据我的项目所基于的Apache httpd 模块开发指南apxs构建类似的 C 示例。

启动容器并构建 Cargo 项目后,我收到无法找到要转换的头文件的错误。

请注意,我已经尝试使用不同的命令(cargo:include.clang_arg)从不同的位置(手动下载并使用系统包安装)包含头文件,但到目前为止没有任何效果。

为什么bindgen找不到头文件?任何帮助,将不胜感激。


Dockerfile

构建.rs

包装器.h

货运.toml

0 投票
1 回答
587 浏览

rust - Bindgen 似乎无法在 OSX 上找到 clang

虽然我确定我做错了什么,但我似乎找不到它。我正在使用bindgen = "0.55.1"并尝试生成pjsip绑定,尽管问题似乎早在此之前。这是构建的输出:

我通过on的bindgen推荐安装了 clang 。我已经验证 /usr/local/opt/llvm@11/lib/libclang.dylib 确实存在。我怀疑符号不存在是问题所在。我应该安装不同(旧)版本的 clang,如果是,是什么版本?brew install llvmmacOS

0 投票
0 回答
666 浏览

c - 带有 rust-bindgen 的未定义符号,但可以用 cc 编译

我正在尝试使用 rust-bindgen 来调用 glfw 和 OpenGL 函数。bindgen 正确生成绑定,但是,当我实际构建我的项目时,它给了我未定义的符号错误(我正在运行 macOS 10.15.3 btw)。

这似乎意味着我没有告诉 rustc 链接 glfw dylib。但是,当我编写自己的内部调用 glfw 的 c 程序并使用 cc crate 链接它时,没有问题,并且所有内容都链接,尽管链接库的行是相同的。

使用 bindgen 的项目代码

文件结构:

包装器.h:

我的 build.rs 文件:

参考的最小 main.rs:

运行时出错cargo build

使用 CC 的代码

最小的 header.c:

build.rs 文件:

main.rs:

并且cargo build运行良好(也是如此cargo run)。

0 投票
1 回答
167 浏览

rust - 无法使用 bindgen 设置包含路径

我正在尝试使用 bindgen 生成与 Qt6 的绑定。我已经按照这个答案尝试了这个: -

但是当我尝试编译它时,我收到以下错误:-

我可以确认/usr/include/qt6/QtCore/QObject文件确实存在

0 投票
1 回答
63 浏览

rust - wasm-pack 代码中的 Rust 导入导致 JS 错误

我收到一个 JS 错误:Uncaught (in promise) TypeError: WebAssembly.instantiate(): Import #0 module="env" error: module is not an object or function

当我在 Chrome 开发工具中查看 wasm 文件时,我在顶部看到这样的导入语句:

是什么导致了这些导入语句?如何删除或修复它们?我可以看到它们是blst包中包含的 Rust 包的blsttc一部分。该blst包使用 bindgen 生成与 blst.h 的 FFI 绑定,所以也许这与它有关?

这个Github repo有代码。我正在使用wasm-pack build --target=web

0 投票
1 回答
315 浏览

rust - Rust bindgen 忽略包含头文件中的特定包含

我有一个头文件,可以说 greetings.h:

我在 rust 中使用 bindgen 将这些文件从 c 头文件生成到 rust 文件。但我想忽略生成include <hola.h>标题并仅使用helllo.hand生成 greeting.h bye.h。我在 docs.rs bindgen 文档中搜索了它,但没有找到任何提示。或者有什么选择可以用clang做到这一点