Есть проблемы с 32-64 битами с OpenCV и Qt - PullRequest
0 голосов
/ 12 ноября 2018

Я давно использую OpenCV 3.2.0.В последнее время мне нужно реализовать распознавание лиц с определением ориентиров, поэтому я решил снова собрать OpenCV с дополнительными модулями OpenCV.Тем не менее, кажется, что OpenCV 3.2.0 не совместим с последними дополнительными модулями OpenCV, поэтому я должен собрать его с последним OpenCV (который является 4.0.0)

Проблема в том, что я вПоймать 22 ситуации.

1.Если я использую mingw 32bit 5.1.0 для сборки OpenCV (который является компилятором в комплекте с Qt), у меня появляется следующая ошибка

CMakeFiles \ opencv_core.dir / objects.a: member CMakeFiles\ opencv_core.dir / objects.a (vs_version.rc.obj) в архиве не является объектом

2.Если я использую mingw 64bit 8.1.0 для сборки OpenCV, он работает нормально.Однако есть две ситуации, которые дают мне ошибку.

2.1.Если я использую mingw 32bit 5.1.0 для сборки проекта Qt с этими библиотеками OpenCV, выдается следующая ошибка:

D: \ opencv-build \ bin \ libopencv_core400.dll: -1: ошибка: файл не распознан: формат файла не распознан

Я подозреваю, что это связано с проблемой 32-64 бит.Компилятор может ожидать 32-битных библиотек, но библиотеки имеют 64-битный формат, потому что компилятор, использованный для сборки OpenCV, был 64-битным.

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

Первый - это формат файла библиотек OpenCV 3.2.0, который я использовалв прошлом и работал нормально с Qt.Второй - это формат файла вновь созданных библиотек OpenCV 4.0.0.

2.2 Если я использую mingw 64bit 8.1.0 для сборки проекта Qt с этими библиотеками OpenCV, выдается следующая ошибка:

collect2.exe: ошибка: ld вернул 5 выходstatus

Я подозреваю, что это произошло, потому что в основном Qt для 32-битных, а не 64-битных.

Что я хочу сделать, так это построить OpenCV 4.0.0, чтобы каким-то образом формат файлов этих библиотек OpenCV был pei-i386, а не pei-x86-64.Как мне этого добиться?

...