Qt应用程序抛出"dyld:未找到符号:__ cg_jpeg_resync_to_restart"

don*_*rog 5 c++ macos qt dylib dyld

dyld在OS X上得到了众所周知的问题.

Qt.pro文件:

INCLUDEPATH += /usr/local/Cellar/libpng/1.6.23/include /usr/local/Cellar/jpeg/8d/include
LIBS += -L/usr/local/Cellar/libpng/1.6.23/lib -L/usr/local/Cellar/jpeg/8d/lib -ljpeg -lpng -ljpeg -lz
Run Code Online (Sandbox Code Playgroud)

在运行时我的应用程序抛出:

dyld:未找到符号:__ cg_jpeg_resync_to_restart引用自:/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.dylib预期在:/usr/local/Cellar/jpeg/8d/lib/libjpeg.8. dylib in /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.dylib

我之前已经得到了这个并且我使用这个答案修复了它,但是现在它再次出现并且这个建议不起作用.我怎么解决这个问题?

小智 8

这只是QtCreator运行时问题.DanyAlejandro的答案(上图)部分正确.

  1. 转到项目 - >运行 - >"运行环境"(显示详细信息)
  2. 我不建议使用Unset,而应该编辑 两者:DYLD_LIBRARY_PATHDYLD_FRAMEWORK_PATH
  3. /System/Library/Frameworks/ImageIO.framework/Resources添加到两个路径的开头(冒号分隔的字符串)
  4. 再次构建项目 - 这将很好地解决它


Dan*_*dro 6

在我的情况下,这个错误只会发生在OSX ElCapitan上的Qt Creator中(在OSX中使用CLion或XCode编译我的OpenCV程序可以在不做任何事情的情况下工作),所以我认为说系统配置发生变化是不对的.是强制性的(如您的链接建议).

我所做的是逐个链接每个库文件(逐个链接dylib文件,以及它们的完整路径).这样,我不必弄乱我的文件或做任何额外的配置.例如:

LIBS += "/usr/local/lib/libopencv_core.dylib"
LIBS += "/usr/local/lib/libopencv_highgui.dylib"
Run Code Online (Sandbox Code Playgroud)

提供此类文件.

编辑:修复此问题的另一种方法(进一步证明这只是Qt Creator相关)是转到项目 - >运行 - >"运行环境"(显示详细信息),选择DYLD_LIBRARY_PATH并单击取消设置.在此之后,您的项目应按预期进行编译.