使用 MingW 运行 OpenCV 项目时出现入口点错误

Posted

技术标签:

【中文标题】使用 MingW 运行 OpenCV 项目时出现入口点错误【英文标题】:Entry point errors when running OpenCV projects with MingW 【发布时间】:2021-04-01 10:29:30 【问题描述】:

我已经在 Windows 10 上安装了 MingW C++ 编译器。我成功构建了 OpenCV 库。 然后我写了一个测试项目如下。

#include <iostream>
#include <opencv2/core.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>

using namespace std;
using namespace cv;

int main()

    Mat input = imread("lenna.jpg", IMREAD_GRAYSCALE);
    //Mat input(100, 200, CV_8UC(1), Scalar(100));

    if (input.empty())
    
        cout << "Image is empty" << endl;
        return -1;
    

    unsigned short rows = input.rows;
    unsigned short cols = input.cols;


    for (unsigned short i = 0; i < cols / 4; i++)
        for (unsigned short j = 0; j < rows / 4; j++)
            input.at<uchar>(j, i) = 0;

    const string wnd = "input";

    namedWindow(wnd, WINDOW_NORMAL);
    imshow(wnd, input);

    waitKey();
    destroyWindow(wnd);

    return 0;

编译成功,但如果我运行它,按照给定的顺序(从上到下一个接一个)出现以下错误。

我的task.json


    "version": "2.0.0",
    "tasks": [
        
            "type": "cppbuild",
            "label": "C/C++: g++.exe build active file",
            "command": "\"$env:WINLAB_CPP\\g++.exe\"",
            "args": [
                "$file",
                "-o",
                "$fileDirname\\$fileBasenameNoExtension.exe",
                "-I",
                "c:\\opencv_z\\build\\include",
                "-L",
                "c:\\opencv_z\\releases\\bin",
                "-llibopencv_core451",
                "-llibopencv_highgui451",
                "-llibopencv_imgcodecs451",
                "-llibopencv_imgproc451",
            ],
            "options": 
                "cwd": "$workspaceFolder"
            ,
            "problemMatcher": [
                "$gcc"
            ],
            "group": 
                "kind": "build",
                "isDefault": true
            
        
    ]

有什么提示可以解决吗?

【问题讨论】:

libopencv_core451.dll 有导出吗?它们是如何装饰的 - gcc 或 ms 风格? ***.com/q/65219534/5482465 【参考方案1】:

罪魁祸首是:

我的PATH 中有两个 64 位 libstdc++-6.dll 文件。不幸的是,旧的位于顶部,因此任何对 64b 位 libstdc++-6.dll 的请求都将绑定到顶部。

因此,我需要新应用程序的应用程序崩溃了。交换它们可以解决问题。

使用 32 位版本的 MinGW 也可以解决这个问题,但这是一个非常有争议的选择!

【讨论】:

这是编译器中的已知错误?

以上是关于使用 MingW 运行 OpenCV 项目时出现入口点错误的主要内容,如果未能解决你的问题,请参考以下文章

Windows系统下使用Mingw编译并运行opencv教程

Windows系统下使用Mingw编译并运行opencv教程

win7 QT +opencv环境搭建

使用 MinGW 编译显示 OpenCV 图像 [重复]

Windows + WinGW-W64 + CMake 搭建 OpenCV

从 MinGW 链接到 OpenCV 的问题