gpt4 book ai didi

c++ - 延迟加载 Dylib

转载 作者:搜寻专家 更新时间:2023-10-31 01:53:34 24 4
gpt4 key购买 nike

我正在用 XCode 3.2.5 为 Mac OS 10.5+ 编写一个 c++ 命令行工具,它是这样写的:-

int main()
{
...
if (a == b)
{
doWork() // defined in my.dylib
doOtherWork() // defined in his.dylib
}
}

然而,即使 a 和 b 不相等,它也会崩溃:-

Lab-Computer-9adf72:tmp labuser$ ./myapp 
dyld: Library not loaded: ./my.dylib
Referenced from: /private/tmp/./myapp
Reason: image not found
Trace/BPT trap

有没有办法至少在未调用函数时使应用程序正常运行?或者只延迟加载?

从多个 dylib 调用了多个这样的函数,因此每个函数检查将是最后的手段,但即使这样也会有所帮助。

最佳答案

我假设您使用 dlopen 动态加载库。然后,您应该使用 dlsym 按名称获取符号(函数)的地址。所以你会这样做:

void (*doWork)();
void (*doOtherWork)();

int main() {
doWork = dlsym(RTLD_DEFAULT, "doWork");
doOtherWork = dlsym(RTLD_DEFAULT, "doOtherWork");
if (a == b) {
if (doWork) doWork();
if (doOtherwork) doOtherWork();
}
}

您可以在这里获得更多信息:Mac OS X ABI Dynamic Loader Reference .

关于c++ - 延迟加载 Dylib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10981664/

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