Domanda

Quindi, sto costruendo un progetto e utilizza le funzioni di una libreria compilata (.dylib o .so).Ho le intestazioni e i file della libreria (tutto questo fa parte di QtRoot, tra l'altro) nelle posizioni appropriate, ma quando provo a creare il mio progetto in Xcode, ricevo un errore del debugger:

amico:Libreria non caricata:@rpath/librio.so referenziato da:/Utenti/Paulthompson/Documents/Programming/Build Products/Debug/MacheLiossim.App/Contende/MacOS/Majexim Motivo:Immagine non trovata sharedlibrary apply-load-rules all I formattatori di dati temporaneamente non disponibili, riproveranno dopo un 'continue'.(Al momento non è possibile accedere al caricatore, è bloccato.)

Ora, il programma stesso che è stato creato funzionerà perfettamente se lo apro dal Finder, ma ogni volta che provo a eseguirlo da Xcode, mi vomita.Cos'è questa cosa di rpath e perché il debugger non riesce a trovare le librerie, anche se Xcode stesso sa dove sono e apparentemente anche il programma quando viene eseguito dal Finder può trovarle?

È stato utile?

Soluzione

http://en.wikipedia.org/wiki/Rpath_ (collegamento)

E 'un percorso memorizzato nel binario per trovare librerie condivise. Quando si avvia l'applicazione da Finder, è probabilmente un pacchetto app? Quando vengono creati app fasci, le librerie condivise vengono copiati nel fascio app, ei percorsi alle librerie in bundle diventano relativa allora. (@Executable_path /../ Frameworks / foobar). Come hai creato la versione che funziona da Finder?

La verifica l'errore precedente al link-time o quando si avvia l'applicazione dal Xcode? (In quest'ultimo caso, provare con DYLD_LIBRARY_PATH)

Inoltre, l'estensione .so per LIBRIO invece di .dylib sembra un po 'sospetto.

Altri suggerimenti

Aggiungi rpath nella fase di collegamento, come in questo esempio (in qt creator):

LIBS += -L/usr/local/root/lib -lGui -lCore -lCint -lRIO -lNet -lHist -lGraf -lGraf3d -lGpad -lTree -lRint -lPostscript -lMatrix -lPhysics -lMathCore -lThread -lpthread -Wl, -rpath,/usr/local/root/lib -lm -ldl

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top