opencv4.3.0 Cmake後debug模式生成不了opencv_world430d.lib

這兩天在win10上使用cmake3.17.2重新編譯opencv4.3.0時(爲了嘗試yolov3),出現了一個問題,我在debug模式下進行編譯時:即ALL_BUILD時,出現錯誤,最後沒有生成opencv_world430d.lib,但是release模式下進行生成時可以生成opencv_world.lib

我開始以爲是我的opencv、opencv_contrib、cuda10.1、cuDNN7.6.5出現錯誤,甚至把tbb也添加進去了,但是還是不能成功。ALL_BUILD生成一次要一個多小時,最後耽誤我好幾天時間,網上也沒有找到合適的解決方法。我仔細查看了編譯生成的日誌,終於找到錯誤的原因了,在生成opencv_world430d.lib的鏈接的時候,出現了一個報錯:fatal error LNK 1210:已超過內部ILK大小限制,鏈接使用/INCREMENTAL:NO。

該錯誤是生成的鏈接的太大了,超過了限制。具體大小限制時多少我也不知道,只知道ILK是:鏈接臨時文件。爲什麼release模式下沒問題,一般release模式是發行模式,是通過優化的,而且內存更小。debug和release模式的區別,我在調試好環境時運行yolov3時:release模式使用GPU加速了10倍,約50ms檢測一幀;而debug模式下,只加速了兩倍,約230ms檢測一幀。

解決方法:在opencv.sln中找到modules文件下對應的opencv_world工程,然後右鍵:屬性->連接器->常規->啓用增量鏈接:選擇否(/INCREMENTAL:NO)。然後重新回到ALL_BUILD進行生成,然後INSTALL生成即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章