簡體   English   中英

由於運行時錯誤缺少 Qt5OpenGL.dll 和 Qt5Test.dll,無法運行 OpenCV-App

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM