使用OpenCV和Qt遇到32-64位问题

时间:2018-11-12 13:27:46

标签: qt opencv mingw-w64 mingw32

很久以前我就使用过OpenCV 3.2.0。 最近,我需要使用地标检测来实现人脸检测,因此我决定再次使用额外的OpenCV模块来构建OpenCV。 但是,似乎OpenCV 3.2.0与最新的额外OpenCV模块不兼容,因此我必须使用最新的OpenCV(即4.0.0)来构建它。

问题是,我处于Catch 22的情况。

1。如果我使用mingw 32位5.1.0构建OpenCV(与Qt捆绑在一起的编译器),则会出现以下错误

  

CMakeFiles \ opencv_core.dir / objects.a:成员   存档中的CMakeFiles \ opencv_core.dir / objects.a(vs_version.rc.obj)为   不是对象

2。如果我使用mingw 64位8.1.0来构建OpenCV,则可以正常工作。但是,有两种情况会给我一个错误。

2.1。如果我使用mingw 32位5.1.0与那些OpenCV库一起构建Qt项目,则会出现以下错误。

  

D:\ opencv-build \ bin \ libopencv_core400.dll:-1:错误:文件不存在   识别:无法识别文件格式

我怀疑这与32-64位问题有关。编译器可能需要32位的库,但是这些库是64位的格式,因为用于构建OpenCV的编译器是64位的mingw。

file format pei-i386
file format pei-x86-64

第一个是我过去使用的OpenCV 3.2.0库的文件格式,并且可以在Qt上正常工作。 第二个是新构建的OpenCV 4.0.0库的文件格式。

2.2如果我使用mingw 64位8.1.0与那些OpenCV库一起构建Qt项目,则会出现以下错误。

  

collect2.exe:错误:ld返回5退出状态

我怀疑这是因为Qt基本上是32位而不是64位。

我想做的是构建OpenCV 4.0.0,以便这些OpenCV库的文件格式某种程度上是pei-i386,而不是pei-x86-64。 我该如何实现?

0 个答案:

没有答案