OpenCV問題集

這邊會收集目前遇到的安裝或專案問題,以及留言(部分是之前部落格的留言)詢問的問題及解法。

Q1.fatal error LNK1207: incompatible PDB format in******

  • 環境
    • Windows 7
    • OpenCV 2.4.9
    • Visual Studio 2012
  • 範例
    • LINK: fatal error LNK1207: incompatible PDB format in “C:\AAAA\BBBB\main.pdb”;delete and rebuild
  • 成功解法
    • 於Visual Studio 2012上方選單的BUILD / Clean Solution / Rebuild Solution

Q2.程式無法啟動,缺少MSVCP120D.DLL

  • 環境
    • Windows 7
    • OpenCV 2.4.9
    • Visual Studio 2012
  • 成功解法
    • 下載MSVCP120D.DLL,針對不同版本至於不同資料夾裡。
    • 64bit 置於 C:\Windows\SysWOW64,32bit 置於 C:\Windows\System32。
  • 補充
    • 這類型缺啥dll檔的通常都上網找dll檔然後重新放置就行了。

Q3.error LNK1104: 無法開啟檔案 ‘winspool.lob’ (感謝PINOCCHIOH提供)

  • 環境
    • OpenCV 2.4.13
    • Visual Studio 2012
  • 可能解法一
    • 在OpenCV安裝與環境教學一文的「3.4Linker Additional Include Directories 設定」要 include 「winspool.lib」等等額外檔案。
    • 要載入的額外檔案如下:kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)

Q4.error LNK1104: 無法開啟檔案 ‘opencv_calib3d249d.lib’ (感謝KUN提供)

  • 環境
    • OpenCV 2.4.13
    • Visual Studio 2013
  • 成功解法
    • 將 opencv_calib3d249d.lib 改為 opencv_calib3d2413d.lib
  • 補充
    • 這邊看來是lib檔案的版本問題了。當時某貓使用的OpenCV版本是2.4.9,所以lib版本號為「249」;到OpenCV 2.4.13 時版本號就變成「2413」。

Q5.應用程式無法啟動 (錯誤代碼0xc000007b)

這個是目前看到問題最多也最麻煩的一個,這個的問題發生原因也是百百種,解法也是百百種。先就目前找到的解法跟大家分享,也感謝大家的發問(雖然發問當下應該是滿臉淚,萬惡的OpenCV環境設置阿)

出現這個錯誤代碼的當下,通常都會跟著一行,說缺少xxx.dll檔,當然也有別種,不過某猫當初遇到的就是缺少dll檔,當遇到這個錯誤碼卻又不知怎解時,可以先從這個錯誤下手。

畢竟「0xc000007b」這個錯誤碼可能產生的原因:「STATUS_INVALID_IMAGE_FORMAT」,就常見在使用x32的dll編譯x64的程式。因為dll檔版本錯誤,編譯時自然找不到需要的dll檔。

  • 狀況一(當初某猫遇到的狀況)
    • 環境:Win7+OpenCV 2.4.9+Visual Studio 2012
    • 狀況:缺少tbb_debug.dll
    • Ans. 下載tbb_debug.dll(x64版本),並置於C:\opencv\build\x64\vc11\bin裡頭

這邊要注意的是

  1. dll檔版本:跟Q1一樣,不同版本要放在不同資料夾裡。
  2. Visual Studio版本:因為是Visual Studio 2012,所以放置在「vc11」這個資料夾。說來這挺有趣的,明明是vs12卻不是放在「vs12」這個資料夾,甚至裏頭也沒有「vs12」這個資料夾。
  • 狀況二(感謝LOUIS和LULU發問)
    • 環境:OpenCV 2.4.11+Visual Studio 2015
    • 狀況:缺少tbb_debug.dll(或任何dll檔都適用),已下載dll也置入資料夾裡了,依舊出現錯誤碼「0xc000007b」
    • 可能解法一
      • 步驟一:放入資料夾的部分,假設專案名稱是A,以下兩個資料夾都請放置dll檔試試:「/Projects/A/A」和「/Projects/A/A/Debug」
      • 步驟二:先確認那個「tbb_debug.dll」版本是屬於「x32」還是「x64」,如果是「x32」請換成「x64」版本試試。
      • 步驟三:設定user的環境變數「OPENCV_DIR」,某猫的設定是「C:\opencv\build;」
    • 可能解法二
      • 網路上看到這篇文章可以試試:http://www.mobile-open.com/2016/922581.html
      • ​某猫就不親自試了,前幾天電腦還原後整個怪怪的,怕拆了vs2012+opencv2.4.9重裝2015和2.4.13後會大爆炸,在此說聲抱歉(IE已經整個壞掉還無法重裝)

Q6.找不到或無法開啟PDB檔案,或者還加上「建置的模組沒有符號」

  • 環境
    • 目前看到的環境有Visual Studio 2015+OpenCV3.2.0
  • 可能解法
    • 在上方工具列的偵錯 / 選項,左側選單裡找到偵錯 / 符號,勾選「Microsoft 符號伺服器」並確定。
    • 目前看來這是因為本機端的pdb檔案沒產生並載入導致的問題,需要改從網路端載入。

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.