Qt应用程序报错 "dyld: Symbol not found: __cg_jpeg_resync_to_restart"。

9

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

在运行时,我的应用程序抛出以下错误:

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 中找到, 但在/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.dylib中找到

我之前已经遇到过这个问题,并使用这个答案进行了修复,但现在又出现了这个问题,这个建议也不起作用了。我该如何解决这个问题?

3个回答

14

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

  1. 进入项目->运行->"运行环境"(显示详细信息)
  2. 我不建议取消设置,而是应该编辑两者:DYLD_LIBRARY_PATHDYLD_FRAMEWORK_PATH
  3. 在两个路径的开头添加/System/Library/Frameworks/ImageIO.framework/Resources:(冒号分隔字符串)
  4. 重新构建项目-这将永久解决问题

请修复我的问题,谢谢。我认为这是系统库链接路径优先级的问题?因为我可能通过brew安装了一些其他库,并附带了不同版本的libjpeg:) - Nezha

7
在我的情况下,这个错误只会在OSX ElCapitan的Qt Creator中发生(在OSX中使用CLion或XCode编译我的OpenCV程序不需要任何操作就可以正常工作),因此我认为说必须更改系统配置是不正确的(如你提供的链接所示)。
我所做的是逐一链接每个库文件(逐一链接dylib文件,并带有完整路径)。这样,我就不必去破坏我的文件或进行任何额外的配置。例如:
LIBS += "/usr/local/lib/libopencv_core.dylib"
LIBS += "/usr/local/lib/libopencv_highgui.dylib"

如果存在这样的文件。

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


3

这个问题 提供了一个屏幕截图,展示了如何找到更改设置的位置:

我在所有地方都找了一遍,除了正确的地方。我将带您完成它。您可以单击图像以获取更大的版本。

在Qt Creator中,窗口左侧有一个工具栏。欢迎、编辑、设计等选项之一是项目。选择该选项卡。

The Projects Tab

从那里开始,左侧附近有一个新的导航区域。在“构建和运行”下的“桌面”中,有一个“运行”部分。

Projects Navigation Section

那个在运行设置中,几乎在页面正中央的是一个灰色框,其中之一是关闭复选框。

Run Settings


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接