gpt4 book ai didi

rust - 在dylib中调用外部函数

转载 作者:行者123 更新时间:2023-12-03 11:41:33 28 4
gpt4 key购买 nike

我有带有如下代码的主应用程序:

pub fn load_lib() {
let dylib = libloading::Library::new("example.dylib") ...
unsafe { *dylib.get(b"fn_in_dylib") } ...
// calling function from dylib.
}
pub extern "Rust" fn fn_in_main_app() { ... } // Function that I want to call from dylib
example.dylib dyliib已成功加载,并且从dylib调用的函数没有任何问题。
但是,这是我要在dylib中做的事情:
pub extern "Rust" fn fn_in_dylib() {
fn_in_main_app(); // Here I'm trying to call function defined in main application.
}
extern "Rust" {
fn fn_in_main_app();
}
但这甚至不能编译:
Undefined symbols for architecture x86_64:
"_fn_in_main_app", referenced from:
我不确定我使用的是正确的方法来实现它,所以当它不被编译时,它不会令我感到惊讶。但我希望它能显示出我实际上正在尝试做的事情。

最佳答案

Dylib不能依赖于加载它们的应用程序。 dylib依赖图必须完全是线性的,不允许循环重复。根据您的操作,可能将fn_in_main_app移至dylib的上游依赖项。您还可以传递指向dylib的函数指针:

pub extern "Rust" fn fn_in_dylib(fn_in_main_app: fn()) {
(fn_in_main_app)();
}

关于rust - 在dylib中调用外部函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64630389/

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