Mam oprogramowanie, które najpierw ładuje .dylib pozwala wywołać libFirst.dylib za pomocą następującego polecenia:dlopen() Błąd obrazu Nie znaleziono
void* handle = dlopen(path.c_str(), RTLD_LAZY | RTLD_GLOBAL);
Później wewnątrz funkcji z załadowanym libFirst.dylib próbuję załadować inną .dylib przy użyciu tego samego polecenia, ale dla libSecond.dylib, załadunek tej wspólnej biblioteki daje mi następujące ostrzeżenia w mojej konsoli 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
Co nie rozumiem jest to, że jej mówi libFirst.dylib nie jest załadowany, ale jestem obecnie w funkcji z libFirst.dylib, więc jak to możliwe?
Wszystkie moje ścieżki w DYLD_LIBRARY_PATH również wydają się poprawne.
Z góry dziękuję, że utknąłem na tym przez wiele dni.
Czy próbowałeś czegoś takiego jak strace? Może dać ci więcej informacji, aby zobaczyć, które połączenie nie działa. – Josh
Mój ślad stosu pokazuje funkcję, która wywołuje dlopen o nazwie CreateModule na libSecond.dylib, która jest funkcją wewnątrz libFirst.dylib. –
Brak śledzenia stosu - strace oznacza śledzenie systemu. Śledzi wywołania funkcji, takie jak otwieranie plików, statystyki i-węzłów itd. Może to rzucić trochę światła na to, gdzie dokładnie twój system operacyjny wygląda. – Josh