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生成即可。

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