2015-03-10 16 views
5

Abbiamo uno screensaver Mac OS X funzionante come progetto Xcode standalone, ma avevamo bisogno di averlo come destinazione in un altro progetto Xcode che contiene anche un app correlata.Lo screensaver MacOSX non si carica a causa della libreria non caricata: @ rpath/libswiftAppKit.dylib

Ho aggiunto un obiettivo per uno screensaver, copiato il codice, aggiunto a tale destinazione, ecc. Ecc. Il codice è lo stesso che funziona nell'altro salvaschermo, ma su questo genera il seguente errore:

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 

La libreria in questione è sicuramente lì:

$ 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 

Tutte le idee che potrebbero essere la causa?

risposta

8

Il problema era che il percorso di ricerca del percorso di scorrimento, per qualche motivo, in questo nuovo obiettivo era vuoto. Ho risolto questo problema aggiungendo questo:

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

ad esso (che ho preso dalla configurazione di screensaver di lavoro). Questo è come sembra:

enter image description here

2

Come Pablo ha detto, è necessario quanto segue come Runtime Percorso di ricerca:

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

Questo dovrebbe essere il default. Assicurati che sia lì comunque. È inoltre necessario impostare Contenuto incorporato Contiene il codice Swift a SI se si utilizza Swift. Mi ci è voluto un po 'per capire.

(Xcode dovrebbe assolutamente dedurre questo. Oh bene, ho archiviato un radar per questo per un po '.)