2016-06-30 74 views
3

我得到衆所周知在OS X dyld問題Qt應用程序拋出 「使dyld:找不到符號:__cg_jpeg_resync_to_restart」

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 

在運行時我的應用程序拋出:

使dyld:找不到符號: /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.dylib 例如:__cg_jpeg_resync_to_restart從引用pected在:/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.dylib /usr/local/Cellar/jpeg/8d/lib/libjpeg.8.dylib在

我已經得到了這個,我修復它使用這個answer,但現在它再次發生,這個建議不起作用。我怎麼解決這個問題?

回答

6

在我的情況下,這個錯誤只會發生在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並點擊取消設置。之後,您的項目應按預期進行編譯。

4

這只是一個QtCreator運行時問題。 DanyAlejandro的回答(上文)部分正確。

  1. 轉到項目 - >運行 - > 「運行環境」(顯示詳細信息)
  2. 我不會推薦取消設置,而你應該編輯 兩種:DYLD_LIBRARY_PATHDYLD_FRAMEWORK_PATH
  3. Add /System/Library/Frameworks/ImageIO.framework/Resources:到兩個路徑的開頭(冒號分隔的字符串)
  4. 重新構建項目 - 這將修復它好
相關問題