Динамическая библиотека не выгружается в приложении Какао - PullRequest
1 голос
/ 01 марта 2012

У меня проблема с динамической библиотекой в ​​приложении Какао.

При нажатии кнопки я загружаю 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);
}

Почему это может быть причиной?

1 Ответ

0 голосов
/ 02 марта 2012

Поток, связанный с Матиасом Вернером, содержит полезную информацию: для выгрузки динамической библиотеки требуется два вызова dlclose ()?

Это происходит из-за времени выполнения Obj-c, и нечегобыть сделано в данный момент.

...