首页 > 解决方案 > 在 Windows 上运行 OpenCV 程序

问题描述

我有一个简单的 OpenCV 测试程序:

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

int main(int argc, char **argv){
    std::cout << "HELLO" << std::endl;

    cv::Mat im=cv::imread((argc==2)? argv[1]: "testing.jpg",cv::IMREAD_COLOR);
    if (im.empty()){
        std::cout << "Cannot open image." << std::endl;
    } else {
        cv::namedWindow("DisplayWindow",cv::WINDOW_AUTOSIZE);
        cv::imshow("DisplayWindow",im);
        cv::waitKey(0);
    }
    return 0;
}

但是,当程序运行时什么都不做。Hello不会打印到控制台,也不会输出错误。

./main
#Nothing.......

值得注意的是,程序终止了,但不是以正确的方式终止。(返回值非零)我不认为这是一个链接错误,因为那些实际上会输出一个错误。

关于正在发生的事情和/或如何解决它的任何想法?如果有任何改变,我正在使用 Windows 计算机。

标签: c++windowsopencv

解决方案


原来windows cmd提示实际上有一些用处。(很意外,早就放弃了)

我从 windows cmd 行运行了测试程序,它说缺少以下库。

libstdc++-6.dll
libgcc_s_dw2-1.dll
libwinpthread-1.dll

为了修复标准 C++ 和 C 库,我只是使用以下命令静态链接它们。(由于版本控制问题,这显然是 Windows 上的常见做法):

g++ -static-libgcc -static-libstdc++ ...rest of compile/link cmd...

为了修复 winpthread dll,我只是将 dll 复制到我程序的 bin 文件夹中,一切正常!


推荐阅读