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

孤街浪徒 提交于 2019-12-07 05:25:46

问题


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:


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



回答2:


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.




回答3:


This question provides a screen shot of finding the setting to change:

I was looking everywhere except the correct spot. I'll walk you through it. You can click the images for bigger versions.

Within Qt Creator, there's a toolbar along the left side of the window. Welcome, Edit, Design, etc. One of the choices is Projects. Select that tab.

From there, there's a new navigation area near the left. Under Build and Run, your Desktop, there's a Run section.

That goes to the run settings, and in almost the exact center of that page are the Run settings in a grey box, and one of the items is the checkbox to turn off.



来源:https://stackoverflow.com/questions/38131011/qt-application-throws-dyld-symbol-not-found-cg-jpeg-resync-to-restart

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