问题标签 [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.
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”?
rust - rust bindgen unaligned tcache chunk 错误
我正在为 rust 中的 avahi lib 绑定,我遇到了运行时错误:
错误代码:
我使用这个这个例子作为参考,我让它在 C 中工作,所以我认为错误一定来自绑定。我也不确定这个错误是什么。
我究竟做错了什么?
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,将尝试报告。
c - Rust bindgen 找不到特定于平台的库?
我正在尝试将我的简单应用程序从 C 移植到 Rust。它只在我的 Mac 上运行,只有 Mac 上的库。这是 C 代码中失败部分的简化版本
这段代码可以简单地调用编译gcc debug.c
,它工作正常。
然后我将 .h 和 .c 添加到我的 rust 项目中,并指定了如下所示的 bindgen
并且main函数没有其他功能,只是暂时测试一下日志:
该程序因以下错误而失败:
我不确定为什么会失败,但我发现如果我删除整个 unsafe 块(不调用函数),编译将起作用。但是有人可以向我解释我做错了什么吗?是否需要添加一些内容才能使其编译?
非常感谢!
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
rust - Bindgen 似乎无法在 OSX 上找到 clang
虽然我确定我做错了什么,但我似乎找不到它。我正在使用bindgen = "0.55.1"
并尝试生成pjsip
绑定,尽管问题似乎早在此之前。这是构建的输出:
我通过on的bindgen
推荐安装了 clang 。我已经验证 /usr/local/opt/llvm@11/lib/libclang.dylib 确实存在。我怀疑符号不存在是问题所在。我应该安装不同(旧)版本的 clang,如果是,是什么版本?brew install llvm
macOS
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
)。
rust - 无法使用 bindgen 设置包含路径
我正在尝试使用 bindgen 生成与 Qt6 的绑定。我已经按照这个答案尝试了这个: -
但是当我尝试编译它时,我收到以下错误:-
我可以确认/usr/include/qt6/QtCore/QObject
文件确实存在
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
rust - Rust bindgen 忽略包含头文件中的特定包含
我有一个头文件,可以说 greetings.h:
我在 rust 中使用 bindgen 将这些文件从 c 头文件生成到 rust 文件。但我想忽略生成include <hola.h>
标题并仅使用helllo.h
and生成 greeting.h bye.h
。我在 docs.rs bindgen 文档中搜索了它,但没有找到任何提示。或者有什么选择可以用clang做到这一点