Mam projekt inny niż ARC, który korzysta z biblioteki statycznej z obsługą ARC. Jest to obsługiwany scenariusz, więc wszystko działa poprawnie. To znaczy, dopóki nie uruchomię kodu na urządzeniu 4.x, w tym na symulatorze. W tym przypadku kod wysadza z następującym błędem łącznikowej:Biblioteka statyczna z obsługą ARC powiązana z projektem innym niż ARC powodującym błędy linkera
dyld: lazy symbol binding failed: Symbol not found: _objc_storeStrong
Referenced from: /Users/zoul/Library/Application Support/iPhone Simulator/4.3.2/Applications/…/Demo.app/Demo
Expected in: /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk/System/Library/Frameworks/Foundation.framework/Foundation
Dzieje się tak szybko, jak niektórzy z kodem ARC-włączona próbuje zadzwonić _objc_storeStrong
funkcję, jak w init
metody (self = [super init]
). Przekształcenie głównego projektu w ARC rozwiązuje problem, ale chciałbym się dowiedzieć, czy istnieją inne rozwiązania.
Czy łączysz za pomocą LLVM, który obsługuje ARC? – Krizz
wpierw: toolchain prawdopodobnie dodał bibliotekę do połączenia, gdy ARC jest włączone przez główny projekt. jeśli nie możesz zlokalizować tego w transkrypcjach, możesz być w stanie połączyć się z nim, kompilując jedno źródło z ARC. – justin
To świetny pomysł, @Justin! Sztuczka z pojedynczym plikiem obsługującym ARC nie działała, ale udało mi się znaleźć odpowiedni argument dla linkera, aby dołączyć bibliotekę i wygląda na to, że działa. Czy możesz to zrobić jako odpowiedź? Zrobimy to, zrobię, edytuję, żeby dodać szczegóły. – zoul