Frage

Also, ich baue ein Projekt, und es nutzt Funktionen aus einer kompilierten Bibliothek (.dylib oder .so). Ich habe die Header und die Bibliotheksdateien (das ist alles Teil QtRoot, btw) an geeigneten Stellen, aber wenn ich versuche, mein Projekt in Xcode zu bauen, ich einen Debugger Fehler:

  

dyld: Bibliothek nicht geladen: @ rpath / libRIO.so     Referenzierten aus: / Users / paulthompson / Dokumente / Programmierung / Build-Produkte / Debug / MacHeliosSim.app / Contents / MacOS / MacHeliosSim     Grund: Bild nicht gefunden   sharedlibrary gelten Last-Regeln alle   Datenformatierern vorübergehend nicht verfügbar ist, wird wieder versuchen, nach einem ‚weiter‘. (Kann zum gegenwärtigen Zeitpunkt nicht in die Lade nennen, es gesperrt ist.)

Nun, sich das Programm, das ganz gut läuft gebaut wird, wenn ich es aus dem Finder zu öffnen, aber wenn ich versuche, es von Xcode zu laufen, barfs es mich an. Was ist die rpath Sache, und warum kann die Bibliotheken nicht der Debugger finden, auch wenn Xcode selbst weiß, wo sie sind, und anscheinend das Programm, wenn aus dem Finder lief sie finden?

War es hilfreich?

Lösung

http://en.wikipedia.org/wiki/Rpath_ (Verknüpfung)

Es ist ein Weg in dem binären gespeichert gemeinsame Libs zu finden. Wenn Sie die App aus dem Finder starten, ist es wahrscheinlich ein App-Bundle? Wenn APP Bündel erzeugt werden, werden gemeinsam benutzten Bibliotheken in das app Bündel kopiert und die Pfade zu den gebündelten Bibliotheken dann relativ geworden. (@Executable_path /../ Frameworks / foobar). Wie haben Sie die Version, dass die Arbeiten von Finder?

Tritt der Fehler oben auf Link-Zeit oder wenn die Anwendung von Xcode zu beginnen? (Im letzteren Fall versuchen, mit DYLD_LIBRARY_PATH)

Auch die .so-Erweiterung für Librio statt .dylib etwas verdächtig aussieht.

Andere Tipps

Fügen Sie die rpath in der Verknüpfungsphase, wie in diesem (in qt Konzept) Beispiel:

  

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 -Im -ldl

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top