找不到 dyld 符号,但 nm 报告其他情况(OS X 更新问题)

Posted

技术标签:

【中文标题】找不到 dyld 符号,但 nm 报告其他情况(OS X 更新问题)【英文标题】:dyld symbol not found, but nm reports otherwise (OS X Update issue) 【发布时间】: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 模拟器出现同样的问题,重启有帮助。 【参考方案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 中不起作用。

以上是关于找不到 dyld 符号,但 nm 报告其他情况(OS X 更新问题)的主要内容,如果未能解决你的问题,请参考以下文章

找不到dyld符号? _UIAccessibilityNotificationVoiceOverIdentifier

dyld:惰性符号绑定失败:找不到符号:_objc_loadWeak

dyld:惰性符号绑定失败:找不到符号:___emutls_get_address

dyld:找不到符号:_OPENSSL_init_ssl

dyld:找不到符号:__TWPVs11AnyHashables20_AnyHashableProtocols

Xcode - dyld:找不到符号:__vtcOnSessionStart