使用 objc 从 Rust 调用 NSApplication

问题描述 投票:0回答:1

我正在尝试通过做一个项目来学习,该项目允许 AppKit 某些功能,与使用 objc 从 Rust 调用应用程序和窗口创建相关。

extern crate objc;
use objc::runtime::{Class,Object};
use objc::{msg_send, sel, sel_impl};

pub fn create_app(){
    unsafe {
        let app_class =Class::get("NSApplication").unwrap();
        let app:&Object = msg_send![app_class,sharedApplication];
        let _:&Object = msg_send![app_class,run];
    }
}

但是,如果我尝试在 main.rs 中运行它,我会得到以下信息:

thread 'main' panicked at src/lib.rs:7:52:
called `Option::unwrap()` on a `None` value

我猜 Objective-C 无法找到 AppKit 的 NSApplication 类,但是为什么以及如何解决这样的问题?

我在 M3 MacO 上运行所有这些只是为了深入了解我的机器。

objective-c macos rust
1个回答
0
投票

我没有充分的知识来解释为什么我将添加的以下解决方案是这里的解决方案,如果有人可以更好地解释它,那么我们非常欢迎。 似乎使用以下命令运行它可以帮助它使用 objc2 板条箱成功找到 AppKit 类。

RUSTFLAGS="-C link-arg=-lobjc -C link-arg=-framework -C link-arg=AppKit" cargo run --release
© www.soinside.com 2019 - 2024. All rights reserved.