【问题标题】:dyld symbol not found, but nm reports otherwise (OS X Update issue)找不到 dyld 符号,但 nm 报告其他情况(OS X 更新问题)
【发布时间】:2014-03-29 14:32:03
【问题描述】:

我正在开发一个 OpenGL 项目,它编译良好,运行它会出现以下错误:

swr-130-64-133-128:assignment Marcella$ ./run
dyld: lazy symbol binding failed: Symbol not found: _gliCreateContextWithShared
  Referenced from: /System/Library/Frameworks/OpenGL.framework/Resources/GLEngine.bundle/GLEngine
  Expected in: flat namespace

dyld: Symbol not found: _gliCreateContextWithShared
  Referenced from: /System/Library/Frameworks/OpenGL.framework/Resources/GLEngine.bundle/GLEngine
  Expected in: flat namespace

我收集到这意味着 OpenGL 框架中缺少符号。但是,nm 另有声明:

0000000000001239 T _gliCreateContextWithShared

Asher 有一个类似的问题,但我不知道如何将他的解决方案应用于我的情况。

值得注意的是:我最近升级到了 OS X 10.9.2,我所有依赖于这个库的项目现在都失败并出现同样的错误。

【问题讨论】:

  • iOS 模拟器出现同样的问题,重启有帮助。

标签: c++ macos opengl dyld


【解决方案1】:

通过添加修复它

export DYLD_INSERT_LIBRARIES='/System/Library/Frameworks/OpenGL.framework/Resources/GLEngine.bundle/GLEngine' 

到我的 .bash_profile。可能不是最优雅的解决方案,但生活就是这样。

【讨论】:

  • 你也可以在Xcode的Edit Scheme下添加Environment Variables
  • 我也在寻找分布式应用程序的永久解决方案,而不仅仅是在 Xcode 中启动的应用程序。一个链接建议在 app .plist 文件中定义 LSEnvironment 键,并添加上述键和字符串。但是,它似乎在 Yosemite 10.10.5 中不起作用。
猜你喜欢
  • 2011-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-16
  • 2012-07-16
  • 1970-01-01
  • 1970-01-01
  • 2015-05-02
相关资源
最近更新 更多