程序入口点__gxx_personality_v0无法在动态链接库libstdc++-6.dll中找到
The procedure entry point __gxx_personality_v0 could not be located in the dynamic link library libstdc++-6.dll
当我试图运行我的openv应用程序时,我得到了这个错误。我正在使用Windows7,CodeBlocks 12.11, opencv2.4.4和MinGW编译器(CodeBlocks中包含的那个)。它编译并创建了可执行文件,但是当我试图运行它时,它崩溃了,出现了过程入口点错误。我已经将C:programsCodeBlocksMingwbin添加到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包含运行时环境。它是基本例程的实现,例如堆管理器或异常处理。
这些基本例程几乎在每个程序中都使用。因此,在每个程序中都放一个副本是对内存的浪费。这就是为什么它们通常被打包到一个共享库(DLL)中。当程序需要运行时的例程时,可以请求DLL。在您的情况下,libstdc++-6.dll包含错误的运行时版本。有两种可能:
- 找到包含正确版本运行时的libstdc++-6.dll,并将其复制到可执行文件的目录中。通过执行
nm libstdc++-6.dll | grep personality
命令可以判断DLL是否正确。如果__gxx_personality_v0
出现在列表中,那么您可能有正确的DLL。 - 将运行时环境的副本放入可执行文件中。您可以通过将
-static-libgcc -static-libstdc++
添加到您的链接器参数中来实现这一点。
这个问题似乎在stackoverflow上已经回答了好几次了。__gxx_personality_v0是干什么用的?作为其中之一
相关文章:
- 在调用FreeLibrary后,释放动态链接到具有相同版本的CRT堆的DLL的内存
- g++用户定义的动态链接库上的全局new和delete运算符
- 如何使用C++导出制作动态链接库
- 使用动态链接加载程序 <dlfcn.h> 而不是直接函数调用的目的是什么?
- 为什么C++可执行文件在与较新的libstdc++.so链接时运行得更快?
- 动态链接库中C++回调函数
- 我的动态链接队列在同一输出流中调用时不正确地输出三个返回函数
- 如何动态链接 grpc 库 c++?
- 调用函数一次用于动态链接库,一次从可执行文件调用函数
- 将函数传递给动态链接库
- aarch64动态链接器rpath使用辅助依赖链接
- 动态链接-Linux与Windows
- 如何将动态链接库与CMake一起使用
- 使用动态链接从.dll库调用函数
- 静态链接 Visual Studio dll 到动态链接的 sfml 项目
- 如何在使用旧版本gcc的系统上动态链接到libc.so.6、libstdc++.so.6的本地副本
- CodeBlocks:如何动态链接libstdc++
- 在动态链接库libstdc++-6.dll中找不到过程入口点_gxx_personality_v0.错误
- 在动态链接库libstdc++-6.dll中无法找到过程入口点_gxx_personality_v0
- 程序入口点__gxx_personality_v0无法在动态链接库libstdc++-6.dll中找到