Qt application throws “dyld: Symbol not found: __cg_jpeg_resync_to_restart”

匿名 (未验证) 提交于 2019-12-03 08:57:35

问题:

I get well known dyld issue on OS X.

Qt.pro file:

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 

In runtime my application throws:

dyld: Symbol not found: __cg_jpeg_resync_to_restart Referenced from: /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.dylib Expected in: /usr/local/Cellar/jpeg/8d/lib/libjpeg.8.dylib in /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.dylib

I already got this before and I fixed it using this answer, but now it occurs again and this advice not works. How can I solve this problem?

回答1:

In my case, this error would only happen in Qt Creator on OSX ElCapitan (Compiling my OpenCV programs with CLion or XCode in OSX would work without doing anything), so I don't think it's correct to say that a change in the system configuration is mandatory (like your link suggests).

What I did, was to link each library file one by one (linking the dylib files one by one, with their full path). This way, I didn't have to mess with my files or do any extra configuration. For example:

LIBS += "/usr/local/lib/libopencv_core.dylib" LIBS += "/usr/local/lib/libopencv_highgui.dylib" 

Provided such files exist.

Edit: Another way to fix this problem (which further proves that this is only Qt Creator related) is to go to Projects -> Run -> "Run Environment" (show Details), select DYLD_LIBRARY_PATH and click Unset. After this, your project should compile as expected.



回答2:

This is only a QtCreator runtime issue. DanyAlejandro's answer (above) is partially correct.

  1. Go to Projects -> Run -> "Run Environment" (show Details)
  2. I would not recommend Unset, rather you should edit Both: DYLD_LIBRARY_PATH and DYLD_FRAMEWORK_PATH
  3. Add /System/Library/Frameworks/ImageIO.framework/Resources: to the beginning for both paths (colon delimited string)
  4. Build project again - this will fix it for good


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!