我有先加載一幅名爲.dylib讓我們稱之爲libFirst.dylib使用以下命令軟件:上dlopen()的錯誤沒有找到圖片
void* handle = dlopen(path.c_str(), RTLD_LAZY | RTLD_GLOBAL);
後來從加載libFirst.dylib功能我試圖內使用相同的命令加載另一個名爲.dylib但libSecond.dylib,這個共享庫的加載讓我在我的Xcode控制檯以下警告:
error warning: Ignored unknown object module at 0x129310 with type 0x8a8399
dlerror: dlopen(/path/libSecond.dylib, 9): Library not loaded: libFirst.dylib
Referenced from: /path/libSecond.dylib
Reason: image not found
我不明白的是,它說libFirst.dylib沒有加載,但我目前正在從libFirst.dylib函數,所以這怎麼可能?
DYLD_LIBRARY_PATH中的所有路徑都顯示正確。
在此先感謝,我一直堅持這幾天。
你試過類似strace的東西嗎?它可能會提供更多信息,以明確哪些呼叫失敗。 – Josh
我的堆棧跟蹤顯示了在libFirst.dylib中的函數libSecond.dylib上調用dlopen的函數CreateModule。 –
不是堆棧跟蹤 - strace代表系統跟蹤。它是跟蹤函數調用,比如打開文件,統計inode等等。它可能會說明操作系統正在查找的位置。 – Josh