我正在尝试使用 rust-bindgen 来调用 glfw 和 OpenGL 函数。bindgen 正确生成了绑定,但是,当我实际构建项目时,它给了我未定义的符号错误(顺便说一句,我运行的是 macOS 10.15.3)。
\n这似乎意味着我没有告诉 rustc 链接 glfw dylib。然而,当我编写自己的 c 程序在内部调用 glfw 并使用 cc 板条箱链接它时,没有问题,并且所有内容都链接,尽管链接库的行是相同的。
\n文件结构:
\n.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Cargo.lock\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Cargo.toml\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 build.rs\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 src\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 lib.rs\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 main.rs\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 wrapper.h\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 target\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 debug\n \xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 build\n \xc2\xa0\xc2\xa0 \xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 bindgen-opengl-10578485537ed6e1\n \xc2\xa0\xc2\xa0 \xc2\xa0\xc2\xa0 \xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 out\n \xc2\xa0\xc2\xa0 \xc2\xa0\xc2\xa0 \xc2\xa0\xc2\xa0 \xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 bindings.rs\n\nRun Code Online (Sandbox Code Playgroud)\n包装器.h:
\n.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Cargo.lock\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Cargo.toml\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 build.rs\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 src\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 lib.rs\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 main.rs\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 wrapper.h\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 target\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 debug\n \xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 build\n \xc2\xa0\xc2\xa0 …Run Code Online (Sandbox Code Playgroud) 我正在按照本教程使用 cairo-rs 为图像绘制一些内容。当我运行我的代码时,我得到一个很长的错误。重要的部分似乎是:
linking with "cc" failed: exit code: 1
Run Code Online (Sandbox Code Playgroud)
和
ld: library not found for -lgobject-2.0
clang: error: linker command failed with exit code 1
Run Code Online (Sandbox Code Playgroud)
我通过 MacPorts 安装了 Cairo,所以这应该不是问题。我从教程中复制了 Cargo.toml 文件,除了最新的包:
[dependencies]
png = "0.12.0"
cairo-rs = {version = "0.4.1", features = ["png"]}
Run Code Online (Sandbox Code Playgroud)
我也尝试了教程中列出的版本,但我得到了同样的错误。
Rust 问题 18610似乎有类似的错误,并建议安装libc-dev. 我不知道那是什么或为什么它会解决任何问题。
我在某处看到它可能是命名冲突,所以我更改了我的项目名称以免冲突,但它没有帮助。
[dependencies]
png = "0.12.0"
cairo-rs = {version = "0.4.1", features = ["png"]}
Run Code Online (Sandbox Code Playgroud)
[package]
name …Run Code Online (Sandbox Code Playgroud) 我有一个 2D 向量,它拒绝使用i32值进行索引,但如果我使用as usize以下方法转换这些值,则可以工作:
#[derive(Clone)]
struct Color;
struct Pixel {
color: Color,
}
fn shooting_star(p: &mut Vec<Vec<Pixel>>, x: i32, y: i32, w: i32, h: i32, c: Color) {
for i in x..=w {
for j in y..=h {
p[i][j].color = c.clone();
}
}
}
fn main() {}
Run Code Online (Sandbox Code Playgroud)
当我编译时,我收到错误消息
#[derive(Clone)]
struct Color;
struct Pixel {
color: Color,
}
fn shooting_star(p: &mut Vec<Vec<Pixel>>, x: i32, y: i32, w: i32, h: i32, c: Color) {
for i in x..=w …Run Code Online (Sandbox Code Playgroud)