我在尝试运行 opencv 应用程序时遇到了该错误。我使用的是 Windows7、CodeBlocks 12.11、opencv2.4.4 和 MinGW 编译器(CodeBlocks 中自带的编译器)。它编译并创建可执行文件,但当我尝试运行时,它因过程入口点错误而崩溃。
我已将 C:\programs\CodeBlocks\Mingw\bin 添加到“PATH”变量,我知道有 libstdc++-6.dll。
我不知道发生了什么事。
这是简单的代码:
include <iostream>
include <opencv2/highgui/highgui.hpp>
using namespace std;
using namespace cv;
int main()
{
cout << "Hello world!" << endl;
namedWindow("window");
Mat image=imread("mustang.jpg",CV_LOAD_IMAGE_COLOR);
imshow("window",image);
waitKey(0);
return 0;
}
libstdc++-6.dll 包含runtime环境。它是基本例程的实现,例如堆管理器或异常处理。
这些基本例程几乎用于每个程序。因此,将它们的副本放入每个程序中会浪费内存。这就是为什么它们通常被打包到共享库(DLL)中。然后,程序在需要运行时例程时可以请求 DLL。
在您的情况下,libstdc++-6.dll 包含错误版本的运行时。有两种可能:
- 找到包含正确版本的运行时的 libstdc++-6.dll,并将其复制到可执行文件的目录中。您可以通过运行来确定 DLL 是否正确。
nm libstdc++-6.dll | grep personality
。如果__gxx_personality_v0
如果出现在列表中,那么您可能拥有正确的 DLL。
- 将运行时环境的副本放入可执行文件中。您可以通过添加来做到这一点
-static-libgcc -static-libstdc++
到你的链接器参数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)