Ich schreibe ein Framework (genannt Lighthouse.framework), das wiederum Code aus einem anderen Framework (RegexKit.framework, um genau zu sein) verwendet. Ich habe RegexKit.framework in mein eigenes Framework kopiert, so dass es eine Struktur wie folgt hat:
%Vor%Wenn ich jedoch versuche, eine Anwendung auszuführen, die Lighthouse.framework (mein Framework) verwendet, erhalte ich den folgenden Fehler:
dyld: Bibliothek nicht geladen: @executable_path /../ Frameworks / RegexKit.framework / Versions / A / RegexKit
Referenziert von: /Users/mdippery/Developer/Projects/Current/lighthouse/build/Debug/Lighthouse.framework/Versions/A/Lighthouse
Grund: Bild nicht gefunden
Offensichtlich findet der Lader RegexKit nicht.
Hier sind die Pfade, die der Lader laden soll, mit freundlicher Genehmigung von otool
:
Kann ich ein Framework in ein anderes Framework aufnehmen? Ist das der richtige Weg? Wie kann ich meinen Fehler beheben?
Ich habe eine Lösung für dieses Problem gefunden. Ich habe ein paar Ideen aus sbooths Antwort übernommen, aber die Lösung war einfacher. Ich habe dieses Skript ausgeführt:
%Vor%als Run Build Script-Phase.
Beachten Sie, dass Sie für den allgemeinen Fall @executable_path/../
in @loader_path/
ändern müssen, und alles ist gut.
Am einfachsten ist es, @rpath zu verwenden. Ihre Konfiguration sollte wie folgt aussehen:
Schließlich sollten alle Anwendungen, die mit Lighthouse.framework verknüpft sind, Runpath-Suchpfade auf @loader_path /../ Frameworks
setzenJa, können Sie.
Sie benötigen jedoch das enthaltene Framework, um zu wissen, was sein installierter Ort zum Zeitpunkt der Erstellung ist; Andernfalls wird dyld
nicht in der Lage sein, es zur Laufzeit zu finden, wie Sie gesehen haben.
Die relevanten Einstellungen in XCode, wenn ich mich richtig erinnere, sind "Installation Directory" und "Framework Install Name". Letzteres wird wahrscheinlich nicht für Ihre Verwendung von Bedeutung sein, aber Sie werden erstere als etwas in der Art von @executable_path/../Frameworks/Lighthouse.framework/Versions/A/Frameworks/RegexKit.framework/Versions/A/
Tags und Links objective-c xcode cocoa frameworks