[英]Can't run OpenCV-App because of runtime error missing Qt5OpenGL.dll and Qt5Test.dll
我想使用 cmake 構建的 OpenCV 庫構建一個應用程序。首先我下載了 opencv4.5.5 的源代碼。 我在該文件夾中創建了一個子文件夾 mingwbuild,從那里我可以執行命令“cmake ../ -G”MinGW Makefiles“然后我運行命令”mingw32-make install“,編譯花了 2 個小時。然后我再次使用 cmake構建項目,如第一個答案中所述: 使用 Cmake 配置 c++ OpenCV 項目然后運行 generated.exe,它會給我一個運行時錯誤“找不到 Qt5OpenGl.dll 和 Qt5Test.dll”
所以我使用命令“pacman -S mingw-w64-x86_64-qt5-base”從這里https://packages.msys2.org/package/mingw-w64-x86_64-qt5-base下載了帶有 MSYS2 的 QtOpenGl.dll 當我然后運行我的opencvtest.exe,它說它找不到QtOpenGl.dll中某些方法的入口點。 所以一定是版本什么的不對?
在 MSYS2 終端搜索 package 時,它說有 10 個包我可以下載和安裝。 前四個是:
$ pacman -Ss qt5-base
mingw32/mingw-w64-i686-qt5-base 5.15.3+kde+r174-2 (mingw-w64-i686-qt5) 跨平台應用程序和 UI 框架 (mingw-w64) mingw32/mingw-w64-i686- qt5-base-debug 5.15.3+kde+r174-2 (mingw-w64-i686-qt5-debug) 跨平台應用程序和 UI 框架 (mingw-w64) mingw64/mingw-w64-x86_64-qt5-base 5.15 .3+kde+r174-2 (mingw-w64-x86_64-qt5) [已安裝] 跨平台應用程序和 UI 框架 (mingw-w64) mingw64/mingw-w64-x86_64-qt5-base-debug 5.15.3+ kde+r174-2 (mingw-w64-x86_64-qt5-debug)
也許如果我選擇版本 package,我還必須在調用 cmake 時設置選項 -DCMAKE_BUILD_TYPE=Release?
選項 x86 表示 64 位 package,沒有 x86 表示 32 位包。 我怎樣才能弄清楚我需要哪些?
任何幫助表示贊賞。
我終於設法編譯了我的 OpenCVApp
關鍵是只能在 MSYS2 MinGW x64 shell 中工作。
首先我需要像這樣安裝 cmake:
pacman -S mingw-w64-x86_64-cmake
然后我必須像這樣用 pacman 安裝 opencv:
pacman -S /mingw-w64-x86_64-opencv
Qt5,我必須這樣安裝:
pacman -S mingw-w64-x86_64-qt5-base
然后我創建了一個新目錄,其中包含 src/main.cpp 和 CMakeLists.txt,如下所示:
這里CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
PROJECT (opencvtest)
find_package(OpenCV REQUIRED )
set( NAME_SRC
src/main.cpp
)
set( NAME_HEADERS
include/header.h
)
INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_SOURCE_DIR}/include )
link_directories( ${CMAKE_BINARY_DIR}/bin)
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin)
add_executable( opencvtest ${NAME_SRC} ${NAME_HEADERS} )
target_link_libraries( opencvtest ${OpenCV_LIBS} )
這里main.cpp
#include <iostream>
#include <sstream>
#include <string>
#include <fstream>
#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace std;
const cv::Vec3b color_azure{ 255, 129, 0 };
const cv::Vec3b color_violet{ 255, 0, 127 };
const cv::Vec3b color_black {0,0,0};
int main() {
cout << "App started" << endl;
cv::Mat image = cv::Mat(cv::Size(800, 600), CV_8UC3, color_black);
std::vector<cv::Point> vs(5);
vs[0] = cv::Point(200, 450);
vs[1] = cv::Point(600, 250);
vs[2] = cv::Point(400, 50);
vs[3] = cv::Point(200, 250);
vs[4] = cv::Point(600, 450);
std::vector<int> nk(9);
nk[0] = 0;
nk[1] = 1;
nk[2] = 2;
nk[3] = 3;
nk[4] = 4;
nk[5] = 0;
nk[6] = 3;
nk[7] = 1;
nk[8] = 4;
std::stringstream ss("Das-ist-das-Haus-vom-Ni-ko-laus");
std::vector<std::string> silben(9);
int j = 0;
while (ss.good())
{
std::string substr;
getline(ss, substr, '-');
silben[j++] = substr + "-";
}
for (int i = 0; i < 8; i++) {
cv::line(image, vs[nk[i]], vs[nk[i + 1]], color_azure, 5);
cv::putText(image, silben[i], cv::Point(i*60, 475),
cv::FONT_HERSHEY_PLAIN, 1, color_violet, 2);
cv::imshow("Image", image);
cv::waitKey();
}
cv::imshow("Image", image);
cv::waitKey(0);
return 0;
}
然后編譯運行正常:
mkdir buildmingw
cd buildmingw
cmake .. -G "MinGW Makefiles"
mingw32-make
bin/opencvtest.exe
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.