【问题标题】:Running OpenCV Program on Windows在 Windows 上运行 OpenCV 程序
【发布时间】:2020-08-05 18:16:22
【问题描述】:

我有一个简单的 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++ windows opencv


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2021-01-18
      • 2021-10-02
      • 2021-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多