首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在动态链接库libstdc++-6.dll中找不到过程入口点__gxx_personality_v0

在动态链接库libstdc++-6.dll中找不到过程入口点__gxx_personality_v0
EN

Stack Overflow用户
提问于 2013-04-22 15:18:06
回答 2查看 4.7K关注 0票数 3

当我尝试运行我的opencv应用程序时,我得到了这个错误。我使用的是Windows7、CodeBlocks 12.11、opencv2.4.4和MinGW编译器(CodeBlocks自带的编译器)。它编译并创建可执行文件,但当我尝试运行它时,它崩溃并出现过程入口点错误。我已经将C:\programs\CodeBlocks\Mingw\bin添加到"PATH“变量中,并且我知道有libstdc++-6.dll。

我不知道怎么回事。

下面是简单的代码:

代码语言:javascript
复制
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;
} 
EN

回答 2

Stack Overflow用户

发布于 2015-10-14 21:56:56

libstdc++-6.dll包含运行时环境。它是基本例程的实现,例如堆管理器或异常处理。

这些基本例程几乎在每个程序中都会用到。因此,将它们的副本放入每个程序中将是一种内存浪费。这就是为什么它们通常被打包到一个共享库(DLL)中的原因。然后,当程序需要运行时的例程时,它们可以请求DLL。

在您的示例中,libstdc++-6.dll包含错误版本的运行时。有两种可能性:

  • 找到包含运行时正确版本的libstdc++-6.dll,并将其复制到可执行文件的目录中。您可以通过运行nm libstdc++-6.dll | grep personality来确定某个DLL是否正确。如果__gxx_personality_v0出现在列表中,那么您的DLL可能是正确的。
  • 将运行时环境的副本放入可执行文件中。您可以通过将-static-libgcc -static-libstdc++添加到链接器参数来完成此操作。
票数 2
EN

Stack Overflow用户

发布于 2013-07-20 15:42:15

这个问题在stackoverflow上似乎已经回答了好几次了。What is __gxx_personality_v0 for?就是其中之一

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16141451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档