c++ - 在 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 计算机。
解决方案
原来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 文件夹中,一切正常!
推荐阅读
- php - 如何在不更改登录参数的情况下解决“LOGINREC 字段的名称太长(严重性 2)”
- java - 为什么最先启动的计时器最慢?
- c# - 如何动态显示 ItemsControl,如父 ItemsControl 的项目?
- python - 通过 python 算法将 Square Hald clut 转换为 Classic Hald clut
- android - 使用导航组件时从 BottomNavigationView 中移除 Badge
- python - PyQT5:在继续功能之前等待信号
- python - scrapy xpath :获取元素内的所有内部文本
- python - 比较 2 个数据框列并删除行
- html - 使用 AWK 提取 HTML 表单/输入内容
- firebase - 如何防止 Firebase 中同一用户的多个帐户?