Build OpenCV with Qt & CUDA 的第72小时
Build OpenCV with Qt & CUDA 的第72小时

Build OpenCV with Qt & CUDA 的第72小时

内容纲要

第七次尝试

经过这次编译,发现了一个很严重的问题,每次编译完成之后似乎没有错误,但是运行代码时却出现无法找到opencvworld440.dll的问题, 结果发现之前查找解决方案时以为使用静态库有用的staticlib文件夹里有数十个.lib文件, 故在vs之中应该是需要将库目录输入并且还要在LINK中添加这些lib文件的引用。

按照这种思路,我把它们全部加入链接器之后,又出现了新的问题,有些函数仍然没有找到合适的引用(Qt和OpenGL),故又将Qt和OpenGL的lib引用至链接器。

就当我以为一切都搞定的时候,运行程序仍然报错… opencv world模块中仍然有找不到的函数定义. 难道是要用动态库编译? 不会吧, 按理说应该没区别的。

我又想到了另一个可能,由于前面那么多次编译失败,build文件夹体积已经达到了30G,所以索性完全重来一次可能会解决冲突问题。

第八次尝试

清理了所有文件和sources,打算重来一次,这次还是继续使用动态库吧,经过这么多次编译,最后几次的问题大都出现在world模块上,总感觉哪里出现了什么问题,可又没办法解决。

经过5个小时的编译,发现仍然是opencvworld模块报错,随即在github, stackoverflow等能找的地方都找了, 终于在opencv自己的fourm里发现一个issue,说明了opencvworld模块和qt模块的不相容性… 这时候才明白原来这么多次报错原来只是因为它们俩根本就不能在一起编译。

可以我还有一个疑惑,world模块不是必要的吗?之前使用opencv的时候每次都需要添加引用,如果不编译会怎么样呢?之后我在opencv fourm里发现了答案:原来opencv world模块是所有opencv inherited modules的集合,如果如果使用动态库分发程序时只需要带上opencvworldxxx.dll就可以免去带上十几个dll的繁杂。

第九次尝试

反选build_opencv_world后,重新编译动态库,在debug模式下配置好目录,终于可以正常使用了Orz

但是还是有其他问题的,例如在Release模式下仍然无法正常编译

不过我已经不想再管了,Damn it, let it be!

OpenCV

真的对这个东西特别无语,contributer上千人,issues 1.8k,一大半是invalid issues…

基础使用还行,深入研究可能才发现大坑。

发表评论

您的电子邮箱地址不会被公开。