gpt4 book ai didi

objective-c - 动态库未在 Cocoa 应用程序中卸载

转载 作者:行者123 更新时间:2023-12-03 17:24:48 25 4
gpt4 key购买 nike

我在 Cocoa 应用程序中的动态库方面遇到问题。

在按钮操作上,我加载一个 dylib,解析其中的函数并执行它,如下所示:

void* handle = dlopen("blah.dylib", RTLD_LAZY);
if (!handle)
{
NSLog(@"dlopen() failure : %s", dlerror());
return;
}

function_to_resolv p = (function_to_resolv)dlsym(handle, "function_to_resolv");
function_to_resolv();
if (dlclose(handle) != 0)
NSLog(@"FAIL");

一切正常,除了库永远不会从二进制文件中卸载。

我用以下代码验证了它:

const uint32_t s = _dyld_image_count();
for (uint32_t i = 0; i < s; i++)
{
const char* str = _dyld_get_image_name(i);
NSLog(@"%s", str);
}

为什么会是这个原因?

最佳答案

Matthias Werner 链接的线程包含有用的信息:unload dynamic library needs two dlclose() calls?

此行为是由于 Obj-c 运行时造成的,目前无需执行任何操作。

关于objective-c - 动态库未在 Cocoa 应用程序中卸载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9519319/

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