2015-03-10 26 views
5

Wir haben einen funktionierenden Mac OS X Bildschirmschoner als eigenständiges Xcode Projekt, aber wir mussten es als Ziel in einem anderen Xcode Projekt haben, das auch einen enthält verwandte App.MacOSX Bildschirmschoner wird nicht geladen, weil die Bibliothek nicht geladen wurde: @ rpath/libswiftAppKit.dylib

Ich habe ein Ziel für einen Bildschirmschoner hinzugefügt, den Code kopiert, zu diesem Ziel hinzugefügt, etc, usw. Der Code ist derselbe, der in dem anderen Bildschirmschoner funktioniert, aber auf diesem, erzeugt es den folgenden Fehler:

2015-03-10 09:43:24.766 System Preferences[32495]: Error loading /Users/pupeno/Library/Screen Savers/Ninja.saver/Contents/MacOS/Ninja: dlopen(/Users/pupeno/Library/Screen Savers/Ninja.saver/Contents/MacOS/Ninja, 265): Library not loaded: @rpath/libswiftAppKit.dylib 
    Referenced from: /Users/pupeno/Library/Screen Savers/Ninja.saver/Contents/MacOS/Ninja 
    Reason: image not found 
2015-03-10 09:43:24.766 System Preferences[32495]: ScreenSaverModules: can't get principalClass for /Users/pupeno/Library/Screen Savers/Ninja.saver 

Die Bibliothek in Frage ist definitiv da:

$ ls -w1 Library/Screen\ Savers/Ninja.saver/Contents/Frameworks/ 
libswiftAppKit.dylib 
libswiftCore.dylib 
libswiftCoreGraphics.dylib 
libswiftDarwin.dylib 
libswiftDispatch.dylib 
libswiftFoundation.dylib 
libswiftObjectiveC.dylib 
libswiftQuartzCore.dylib 
libswiftSecurity.dylib 

Irgendwelche Ideen, was könnte die Ursache sein?

Antwort

8

Das Problem war, dass der Runpath-Suchpfad aus irgendeinem Grund in diesem neuen Ziel leer war. Ich reparierte dieses Problem durch das Hinzufügen von:

@executable_path/../Frameworks @loader_path/../Frameworks 

es (was ich aus der Arbeitsbildschirmkonfiguration habe). Dies ist, wie es aussieht:

enter image description here

2

wie Pablo sagte, benötigen Sie bitte den folgenden als Runtime-Suchpfad:

@executable_path/../Frameworks @loader_path/../Frameworks 

Dies sollte der Standard sein. Stellen Sie sicher, dass es da ist. Sie müssen auch Eingebetteten Inhalt enthält Swift-Code zu YES, wenn Sie Swift verwenden. Das hat mich eine Weile gebraucht, um es herauszufinden.

(Xcode sollte dies vollständig schließen. Oh, gut. Ich habe ein Radar für diese eine Weile archiviert.)