我的應用程序使用libjpeg讀取/寫入JPEG圖像。一切工作正常在運行時找出libjpeg版本(或其他方式來防止終止)?
最近我的應用程序開始崩潰時試圖寫入錯誤「錯誤的JPEG庫版本:庫是80,調用者期望62」時調用jpeg_create_compress()(所以崩潰似乎是故意的在libjpeg端而不是segfault)
有點調查顯示,我的應用程序確實是針對libjpeg-62頭文件(安裝在/ usr/local/include中)編譯的,然後使用libjpeg中的dylibs -80(安裝在/ usr/lib/i386-linux-gnu /下)。
刪除libjpeg-62頭文件和使用libjpeg-80頭文件編譯解決了這個問題。然而,如果我的應用程序被編譯時,即使某些最終用戶安裝了不同的庫版本,我也將不勝感激。 1)如果我能以某種方式說服libjpeg甚至不致於致命錯誤,那將是一件好事; 例如是這樣的:
jpeg_abort_on_error(0);
2)或具有非中止檢查是否安裝正確的庫:
if(!jpeg_check_libraryversion()) return;
3)如果這不是可行的開箱即用,我很好手動根據在運行時檢測到的compat版本檢查編譯時API版本(JPEG_LIB_VERSION)。
不幸的是,我一直無法在API中找到任何可以使用這兩種方法之一的東西。
我只是失明或我需要一個完全不同的東西?
我這個標記爲「Debian的」顯示爲基於Debian的系統上的問題;前段時間debian從libjpeg62過渡到libjpeg8) – 2012-04-26 11:59:23
然後靜態鏈接到jpeg庫。 – BeRecursive 2012-04-26 12:00:29
這不是一個簡單的問題!你想要做的並不一定是不可能的,但它確實傾向於削弱Debian系統的粒度,不是嗎?祝你好運。 – thb 2012-04-26 12:01:35