赞
踩
本机环境:Win10,vs2019,Qt5.15.0,opencv3.4.0,CUDA11.1,GPU:GTX1050Ti
时间匆忙,不及排版,看看内容有没有可以参考的吧
对于使用Qt调用yolo过程中出现的一些问题进行记录
#1
程序异常结束。
The process was ended forcefully.
F:\QT_creator\environment\yolo_demo\QTyolo\facdet\release\facdet.exe crashed.
异常结束,可能原因包括未初始化的变量直接使用,但是编译器没有报这种错,这个错误发生的时候是编译通过,运行异常结束。还看是对外部库的引用出现问题,解决方法是将项目-构建设置-general中的shallow build 取消。取消之前,debug、release的中间文件会在工程目录(F:\QT_creator\environment\yolo_demo\QTyolo)外面建一个文件夹来存放(\QTyolo\build-facdet-Desktop_Qt_5_15_0_MSVC2019_64bit-Release),取消之后,这些中间文件就会直接到工程目录里面建一个目录来存放(\QTyolo\facdet\release)。而我们的dll库是放在这个facdet文件夹里面的,所以只有后面一种情况,才能够顺利使用这些dll文件,进而完成程序的运行。
#1.5
mainwindow.obj -1: error: LNK2019: 无法解析的外部符号 "public: int __cdecl Detector::get_net_height(void)const " (?get_net_height@Detector@@QEBAHXZ),函数 "public: class std::shared_ptr __cdecl Detector::mat_to_image_resize(class cv::Mat)const " (?mat_to_image_resize@Detector@@QEBA?AV?$shared_ptr@Uimage_t@@@std@@VMat@cv@@@Z) 中引用了该符号
出现这种情况,不一定是没有在yolo_v2_class.hpp中对detector类前后的opencv进行处理,还可能是根本没有把yolo_cpp_dll.lib导到项目中来。
#2
OpenCV Error: Unknown error code -10 (Raw image encoder error: Empty JPEG image (DNL not supported)) in cv::BaseImageEncoder::throwOnEror, file C:\build\master_winpack-build-win64-vc14\opencv\modules\imgcodecs\src\grfmt_base.cpp, line 140
出现这种opencv的error,经查是没有对mat做判空处理,补上mat.empty()即可。
值得一提的是,千万别再在这种语境里把if写成while。
#3
F:\QT_creator\environment\yolo_demo\QTyolo\facdet\mainwindow.cpp:20: warning: ignoring #pragma comment [-Wunknown-pragmas]
#pragma comment(lib, “F:/QT_creator/environment/yolo_demo/QTyolo/facdet/yolo_cpp_dll.lib”)//寮曞叆閾炬帴搴锛屽啓鍏ヨ嚜宸辩殑鏂囦欢璺緞
^
出现这种warning是因为,pragma是MSVC版Qt调用lib库的方法,对于mingw版的不适用,当然也不会报error只是一不会调用成功,二warning一下。解决方法建议换MSVC版。
对于在pro中使用:LIBS +=F:/QT_creator/environment/yolo_demo/QTyolo/facdet/yolo_cpp_dll.lib 这类方法(包括使用-l、不加后缀.lib等)来导入lib都会遇到LNK1181:无法打开输入文件.obj的问题,建议还是用pragma来导入吧。
#4
Qt5.15.0(选了MSVC2019 64bit 和MSVC2019 32bit)安装之后,kit中出现了上述两个套件,但是有黄色感叹号。解决方法,安装其他两个所需配件。(实际操作发现,只安装那个Visual C++ 库运行组件就能够使Qt中的那两个套件可以使用了,这可能是因为我已经安装了VS2019)。详见:
https://blog.csdn.net/zjgo007/article/details/114296400?spm=1001.2014.3001.5501
#5
出现x86、x64平台不匹配或者是32位、64位有冲突混杂。最稳妥的方法还是保证版本配置的一致性。比如本次,yolo_cpp_dll.dll(.lib)都是由VS2019生成的,因此在Qt中使用的时候也最好用MSVC2019进行配套,而我们的电脑是x64架构、64位处理器,yolo_cpp_dll.dll经过检查发现也是64位,因此MSVC2019也最好64位。(当然Qt本身是32位的,但是好像也没什么影响)(主要是dll的版本和Qt套件要一致,Qt代码本身是没有版本而言的,只是看用什么编译器来编译就产生不一样的版本罢了)
当然,实际操作中发现,只有MSVC2019 64bit可以完美运行,其他的都不行。具体报错包括1.LNK 2.RC-1: error: RC1106 : invalid option: -ologo出现这个问题经查使用的SDK版本小于7; 3.未完待续
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。