Have a 32-64bit problem with OpenCV and Qt

こ雲淡風輕ζ 提交于 2020-01-06 01:57:05

问题


I have used OpenCV 3.2.0 since a long time ago. Recently, I need to implement face detection with landmark detection so I decided to build the OpenCV again with extra OpenCV modules. However, it seems that OpenCV 3.2.0 is not compatible with the latest extra OpenCV modules so I have to build it with the latest OpenCV (which is 4.0.0)

The problem is, I'm in a Catch 22 situation.

1. If I use mingw 32bit 5.1.0 to build OpenCV (which is a compiler bundled with Qt), I have a following error

CMakeFiles\opencv_core.dir/objects.a: member CMakeFiles\opencv_core.dir/objects.a(vs_version.rc.obj) in archive is not an object

2. If I use mingw 64bit 8.1.0 to build OpenCV, it works fine. However there are two situations that give me an error.

2.1. If I use mingw 32bit 5.1.0 to build a Qt Project with those OpenCV libs, it gives a following error.

D:\opencv-build\bin\libopencv_core400.dll:-1: error: file not recognized: File format not recognized

I suspect that this has something to do with 32-64bit problem. The compiler may expect 32bit libs, but the libs are 64bit format because the compiler used to build OpenCV was 64bit mingw.

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

The first one is the file format of the OpenCV 3.2.0 libs which I used in the past and worked fine with Qt. The second one is the file format of the OpenCV 4.0.0 libs newly built.

2.2 If I use mingw 64bit 8.1.0 to build a Qt Project with those OpenCV libs, it gives a following error.

collect2.exe: error: ld returned 5 exit status

I suspect that this occurred because basically Qt is for 32-bit, not 64-bit.

What I want to do is that building OpenCV 4.0.0 so that somehow the file format of those OpenCV libs is pei-i386, not pei-x86-64. How can I achieve this?

来源:https://stackoverflow.com/questions/53263199/have-a-32-64bit-problem-with-opencv-and-qt

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!