【问题标题】:Using a framework in a PreferencePane在 PreferencePane 中使用框架
【发布时间】:2010-05-16 21:33:23
【问题描述】:

我目前正在尝试在我的首选项窗格中实施“第三方框架”(FeedbackReporter.Framework)。

不幸的是,我在尝试启动我的首选项窗格时一直收到以下错误:

16.05.10 23:13:30 系统偏好设置[32645] dlopen_preflight 失败了 dlopen_preflight(/Users/me/Library/PreferencePanes/myPane.prefPane/Contents/MacOS/myPane): 库未加载: @executable_path/../Frameworks/FeedbackReporter.framework/Versions/A/FeedbackReporter 参考自: /Users/me/Library/PreferencePanes/myPane.prefPane/Contents/MacOS/myPane 原因:找不到图片 /Users/me/Library/PreferencePanes/myPane.prefPane

据我目前阅读,这个问题可能是因为我的 prefPane 不是实际的应用程序,而是“System Settings.app”的“插件”,因此@executable_path 解析为该应用程序包中的路径,而不是我的 prefpane 的捆绑包。

但我并没有真正了解如何解决这个问题。我想这一定很容易,因为人们在 PreferencePanes 中使用非苹果框架应该是一种常见的情况。

感谢您的提示!

-- 简短更新: 据我了解到目前为止我阅读的大量文档,可能有一个必须在第三方框架中完成的设置。显然,“安装路径”必须设置为“loader_path”而不是“executable_path”才能在首选项窗格中工作。

但是由于我使用的是预编译框架(FeedbackReporter.framework),这可能是作者必须更改的设置?!即使我可以自己编译框架,我也不知道在 Xcode 中在哪里更改这个 install_path。

【问题讨论】:

  • 显然这实际上是框架开发人员必须改变的。我注意到咆哮框架有类似的变化(他们以前使用@executable_path,现在使用@loader_path。对于FeedbackReporter.framework有同样问题的人:getsatisfaction.com/vaferorg/topics/…

标签: objective-c cocoa frameworks plugins linker


【解决方案1】:

如果你等不及下一个版本,只需下载源代码,更改它

FeedbackReporter.xcodeproj/project.pbxproj

然后自己打开并编译框架。

【讨论】:

    【解决方案2】:

    其实不用重新编译第三方框架也可以自己改。您可以使用install_name_tool 更改 MachO 二进制文件在何处查找共享对象库。首先使用otool -L <binary file for your plugin> 获取它期望其库所在的路径,然后使用install_name_tool -change ... 更改该文件中的路径。对任何捆绑的框架重复此操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-26
      • 2015-03-14
      • 2016-05-21
      相关资源
      最近更新 更多