Die Bereitstellung von Qt-Frameworks mit der Mac-app und die Verwendung von otool

Ich habe ein problem der Bereitstellung von Qt-frameworks mit meinem Mac-app, und ich hoffe, einige von Ihnen haben eine Ahnung, warum bekomme ich diese Fehlermeldung, wenn ich die app starte auf der sauberen Mac, also keine Entwickler-Mac.

OS: 10.7 .2 und Verwendung von XCode

Error msg:

Library not loaded: @loader_path/../Frameworks/QtCore.framework/Versions/4.0/QtCore
Referenced from:/Users/someUser/Downloads/MainApp.app/Contents/Resources/Lib/Library.bundle/Contents/MacOS/../Frameworks/../Frameworks/QtXml.framework/Versions/4/QtXml

Klar, so etwas ist falsch, da der QtXml ist aus verwiesen /../Frameworks/../Frameworks, die nicht existiert.

Dies ist der Aufbau: ich habe eine dylib verwendet QtCore und QtXml (nicht durch meine Wahl, aber jetzt muss ich diese beiden frameworks), die dylib ist in einem NSBundle, die geladen wird, indem die Haupt-app, das bundle befindet sich im resource Ordner. Die dylib verschoben wird, die durch Kopieren von Dateien Build-Phase in den Ordner Contents/Frameworks und mit otool die install_name festgelegt ist (wie bereits von http://doc.qt.digia.com/4.3/deployment-mac.html):

@loader_path/../Frameworks/QtCore.framework/Versions/4.0/QtCore
@loader_path/../Frameworks/QtXml.framework/Versions/4/QtXml

dann die Qt-frameworks verschoben Contents/Frameworks und der install_name der festgelegt ist:

@executable_path/../Frameworks/QtCore.framework/Versions/4.0/QtCore

und für die QtXml
@executable_path/../Frameworks/QtXml.framework/Versions/4/QtXml
mit Verweis auf QtCore:
@executable_path/../Frameworks/QtCore.framework/Versions/4.0/QtCore

Nun, wenn ich die app starte, auf der Entwickler-mac es ganz offensichtlich funktioniert, da Qt installiert ist, aber wenn Sie verschoben, um eine saubere mac bekomme ich die Fehlermeldung msg, lesbar in der Konsole app.
Ich habe versucht, ändern Sie die executable_path zu loader_path, aber das hat nicht funktioniert.
Ich habe keine Ahnung, was ich falsch mache oder warum es nicht für, und nicht in der Lage gewesen, irgendetwas zu finden auf Google, natürlich, ich könnte auf der Suche an den falschen stellen. Irgendwelche Ideen, wie man dieses problem beheben?

Das ist die gesamte Fehlermeldung:

MainApp: Error Domain=NSCocoaErrorDomain Code=3587 "bundle
"Bibliothek" konnte nicht geladen werden, da es beschädigt ist oder fehlt
die nötigen Ressourcen."

(dlopen_preflight(/Users/someUser/Downloads/MainApp.app/Contents/Resources/Lib/Bibliothek.bundle/
Contents/MacOS/Bibliothek): Bibliothek nicht geladen werden:

@loader_path/../Frameworks/QtCore.framework/Versions/4.0/QtCore
Referenziert von: /Users/someUser /Downloads/
MainApp.app/Contents/Resources/Lib/Library.bundle/Contents/MacOS/../Frameworks/../Frameworks/QtXml.framework/Versions/4/QtXml
Grund: Bild nicht gefunden) UserInfo=0x107c5d5d0
{NSLocalizedFailureReason=Das bundle fehlt oder beschädigt ist notwendig
Ressourcen., NSLocalizedRecoverySuggestion=Versuchen Sie die
bundle.,
NSFilePath=/Users/someUser/Downloads/MainApp.app/Contents/Resources/Lib/Library.bundle/Contents/MacOS/Library,
NSDebugDescription=dlopen_preflight(/Users/someUser
/Downloads/MainApp.app/Contents/Resources/Lib/Bibliothek.bundle/Contents/MacOS/Bibliothek):
Bibliothek nicht geladen werden:
@loader_path/../Frameworks/QtCore.framework/Versions/4.0/QtCore

Referenziert von:
/Users/someUser/Downloads/MainApp.app/Contents/Resources/Lib/Library.bundle/Contents/MacOS/../Frameworks/../Frameworks/QtXml.framework/Versions/4/QtXml
Grund: Bild nicht gefunden
NSBundlePath=/Users/someUser/Downloads/MainApp.app/Contents/Resources/Lib/Bibliothek.bundle,
NSLocalizedDescription=Das bundle "Bibliothek" konnte nicht geladen werden, da
es ist beschädigt, oder fehlen die nötigen Ressourcen.}

Schreibe einen Kommentar