Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ CvNamedWidow总是能识别故障_C++_C_Opencv_Mingw - Fatal编程技术网

C++ CvNamedWidow总是能识别故障

C++ CvNamedWidow总是能识别故障,c++,c,opencv,mingw,C++,C,Opencv,Mingw,每当我调用cvNamedWindow时,我都会遇到分段错误,我不知道为什么会发生这种情况。我尝试过在线编译代码示例,也尝试过编写自己的代码示例。下面是一段再现问题的最小代码: #include <opencv2/opencv.hpp> int main() { cvNamedWindow("Video"); return 0; } #包括 int main(){ cvNamedWindow(“视频”); 返回0; } cv::namedWindow(“视频”)也

每当我调用
cvNamedWindow
时,我都会遇到分段错误,我不知道为什么会发生这种情况。我尝试过在线编译代码示例,也尝试过编写自己的代码示例。下面是一段再现问题的最小代码:

#include <opencv2/opencv.hpp>

int main() {
    cvNamedWindow("Video");
    return 0;
}
#包括
int main(){
cvNamedWindow(“视频”);
返回0;
}

cv::namedWindow(“视频”)
也不起作用。为什么会发生这种情况?我正在使用Qt Creator使用MinGW(C++编译器v4.6.1)下的OpenCV 2.3.1进行编译。

我测试了您的代码,但无法在以下计算机上重现问题:

  • LinuxGCC 4.5.120100924(红帽4.5.1-4)
  • Windows XPVS2010
但是,调用
cvdestronWindow()
释放创建窗口时分配的资源是一种好的做法:

#include <opencv2/opencv.hpp>

int main() 
{
    cvNamedWindow("Video");

    cvDestroyWindow("Video");

    return 0;
}
#包括
int main()
{
cvNamedWindow(“视频”);
视频窗口(“视频”);
返回0;
}

在我用过的窗户上。下面是Visual Studio 2010上的一个it解决方案。

我测试了您的代码,但无法在以下计算机上重现该问题:

  • LinuxGCC 4.5.120100924(红帽4.5.1-4)
  • Windows XPVS2010
但是,调用
cvdestronWindow()
释放创建窗口时分配的资源是一种好的做法:

#include <opencv2/opencv.hpp>

int main() 
{
    cvNamedWindow("Video");

    cvDestroyWindow("Video");

    return 0;
}
#包括
int main()
{
cvNamedWindow(“视频”);
视频窗口(“视频”);
返回0;
}

在我用过的窗户上。这是Visual Studio 2010上的一个it问题。

我假设问题与我发布的内容有关。长话短说,我的另一个问题与调试和发布DLL之间的差异有关,我不知道这些差异。

我假设问题与我发布的DLL有关。长话短说,我的另一个问题与我不知道的调试和发布DLL之间的差异有关。

可能与问题的原因没有直接关系,但对我来说,分段错误的原因是由于多线程(并行处理)。

可能与问题的原因没有直接关系,但对我来说,分段错误的原因是多线程(并行处理)。

你说得对,我也应该调用
cvdestronWindow
。但是我使用调试器进行了检查,程序在
cvNamedWindow
期间出现了故障,而不是之后。因此,在退出之前破坏窗口并不能解决问题。我不知道该告诉你什么。这两种情况在Linux上都不会发生。我会用MingW重新编译OpenCV,并确保所有内容都编译成功。我假设您使用的是最新版本的OpenCV!你可以使用其他编译器吗?那没什么区别。毕竟,这是一个默认参数。到目前为止还没有编译器出故障的迹象!更新答案。这个问题在VS2010上没有发生。有趣的是你提到了这一点。在阅读了您的评论之后,我设置了一个VS2010编译环境,代码运行顺利。然后我切换回MinGW,它也工作得很顺利!我不知道发生了什么,但似乎已经解决了。我想一定是我的构建环境中的某些东西。你是对的,我也应该调用
cvdestronWindow
。但是我使用调试器进行了检查,程序在
cvNamedWindow
期间出现了故障,而不是之后。因此,在退出之前破坏窗口并不能解决问题。我不知道该告诉你什么。这两种情况在Linux上都不会发生。我会用MingW重新编译OpenCV,并确保所有内容都编译成功。我假设您使用的是最新版本的OpenCV!你可以使用其他编译器吗?那没什么区别。毕竟,这是一个默认参数。到目前为止还没有编译器出故障的迹象!更新答案。这个问题在VS2010上没有发生。有趣的是你提到了这一点。在阅读了您的评论之后,我设置了一个VS2010编译环境,代码运行顺利。然后我切换回MinGW,它也工作得很顺利!我不知道发生了什么,但似乎已经解决了。我猜一定是在我的构建环境中。如果我没有弄错的话,cv::namedWindow在highgui标题中,但是您的segfault不应该是这种情况。我所能想到的唯一原因是你链接到了一个错误版本的opencv…这个问题在这篇文章中已经解决了:如果我没有弄错的话,cv::namedWindow在highgui标题中,但是你的segfault不应该是这样。我能想到的唯一原因是你链接到了一个错误的opencv版本……这个问题在这篇文章中得到了解决: