views:

51

answers:

2

Hi,

i am currently trying to implement a "third party framework" (FeedbackReporter.Framework) into my preferencepane.

Unfortunately I am getting the following error all the time when trying to launch my preference pane:

16.05.10 23:13:30 System Preferences[32645] dlopen_preflight failed with dlopen_preflight(/Users/me/Library/PreferencePanes/myPane.prefPane/Contents/MacOS/myPane): Library not loaded: @executable_path/../Frameworks/FeedbackReporter.framework/Versions/A/FeedbackReporter Referenced from: /Users/me/Library/PreferencePanes/myPane.prefPane/Contents/MacOS/myPane Reason: image not found for /Users/me/Library/PreferencePanes/myPane.prefPane

As far as I read so far, this problem is probably caused because my prefPane is no actual app, but a "plugin" of "System Settings.app" and thus @executable_path resolves to a path within the bundle of this app, instead of the bundle of my prefpane.

But I don't really picked up howto fix this problem. I guess it must be fairly easy since it should be a usual case that people use non-apple-frameworks in PreferencePanes.

Thanks for your hints!

-- Short Update: As far as I understood tons of docs I read so far, there might be a setting which has to be done in the third-party framework. Obviously the "install path" has to be set to "loader_path" instead to "executable_path" in order to work in a preferencepane.

But since I am using a precompiled framework (FeedbackReporter.framework) this is probably a setting which the author has to change?! and even if i could compile the framework myself, i had no idea where to change this install_path in Xcode.

A: 

If you cannot wait for the next release just download the source, change it in

FeedbackReporter.xcodeproj/project.pbxproj

and then open and compile the framework yourself.

tcurdt
Cool. Thank you!
Jonathan
A: 

Actually, you can change it yourself without recompiling the third party framework. You can use install_name_tool to change where a MachO binary will look for shared object libraries. First use otool -L <binary file for your plugin> to get the paths of where it expects its libraries to be, then use install_name_tool -change ... to change the paths in that file. Repeat for any bundled frameworks.

JeremyP