gpt4 book ai didi

rust - 如何从 Rust 链接 gtk?

转载 作者:行者123 更新时间:2023-12-03 11:37:01 25 4
gpt4 key购买 nike

我正在使用 GTK 提供的来自 https://www.gtk.org 的 Rust 示例,并且想知道如何将 GTK 确定为依赖项(或其他类型的先决条件),以便在那里提供的 Rust 程序将与 cargo 一起构建。
这是代码,从那里复制而没有修改:

use gio::prelude::*;
use glib::clone;
use gtk::prelude::*;

// When the application is launched…
fn on_activate(application: &gtk::Application) {
// … create a new window …
let window = gtk::ApplicationWindow::new(application);
// … with a button in it …
let button = gtk::Button::new_with_label("Hello World!");
// … which closes the window when clicked
button.connect_clicked(clone!(@weak window => move |_| window.close()));
window.add(&button);
window.show_all();
}

fn main() {
// Create a new application
let app = gtk::Application::new(Some("com.github.gtk-rs.examples.basic"), Default::default())
.expect("Initialization failed...");
app.connect_activate(|app| on_activate(app));
// Run the application
app.run(&std::env::args().collect::<Vec<_>>());
}
照原样,没有任何 Cargo.toml gtk 的定义,编译程序时不会解析 gtk 符号。
你会怎么做最地道?
当然,我的系统上确实安装了 GTK。
谢谢!

最佳答案

Rust 可以使用 C ABI 调用代码,但正如@Herohtar 解释的那样,它不是自动的。您需要向编译器提供有关 extern "C" 的信息能够调用它们的函数。
对于普通库,可能存在现有的绑定(bind)。这些是 Rust 库包,其中包含已经为您编写的所有胶水。它们的工作方式与您放入 Cargo.toml 的任何其他 Rust 依赖项一样。文件。

关于rust - 如何从 Rust 链接 gtk?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63744854/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com