2012-03-01 51 views
1

我在可可應用程序中動態庫存在問題。動態庫不可卸載在可可應用程序中

上的一個按鈕動作,我打開一個dylib,RESOLV一個功能它並執行它,如下所示:

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

也許http://stackoverflow.com/questions/8793099/unload-dynamic-library-needs-two-dlclose-calls提供了答案。 – Matthias 2012-03-01 16:06:24

+0

天哪,我錯過了。謝謝,恢復正是這個問題,但可悲的是沒有解決方案atm :( – Nyx0uf 2012-03-01 21:52:41

回答

相關問題