【问题标题】:The procedure entry point _gxx_personality_v0 could not be located in the dynamic link library libstdc++-6.dll无法在动态链接库 libstdc++-6.dll 中找到过程入口点 _gxx_personality_v0
【发布时间】:2014-07-02 11:30:06
【问题描述】:

我已经使用 MinGW 安装了 Codeblocks 13.12,并尝试运行 OpenCV 应用程序。我编译它没有问题,但是当我尝试运行它时会抛出以下错误:

The procedure entry point _gxx_personality_v0 could not be located in the dynamic link library libstdc++-6.dll

我检查了具有类似问题的stackoverflow问题,每个人都指向将MinGW dll文件复制到应用程序文件夹。我这样做了,然后我遇到了这个错误:

This application has failed to start because libgcc_s_dw2-1.dll was not found. Reinstalling the application may fix this problem.

所以我也复制了那个 dll。然后我有以下错误:

This application has failed to start because libgcc_s_sjij-1.dll was not found. Reinstalling the application may fix this problem.

我也复制了这个 dll,然后我又遇到了关于缺少 __gxx_personality_v0 入口点的第一个错误。

【问题讨论】:

  • 这是一个带有 mingw 预编译库的旧 opencv 版本吗?
  • @berak 是的,我使用带有预编译库的 OpenCV 2.3。
  • 正如@rubenvb 下面所说,您需要完全使用相同的工具链,opencv 库是针对其构建的。这是他们最近停止提供预构建库的主要原因。从 src 重建它们可能是你最好的选择。当你在那个时候,请更新到 2.4.9。 2.3 是石器时代。

标签: c++ opencv dll mingw codeblocks


【解决方案1】:

这是 ABI 不兼容问题。您正在链接使用两种不同工具链构建的代码(一种使用 dw2 异常处理,另一种使用 sjlj)。

要么使用相同的工具链重新构建所有内容,要么为自己找到一个匹配的工具链:

  • MinGW-w64 installer 位于 here。您可以在运行时选择各种变体。
  • 使用MSYS2,它带有一个存储库,其中包含已经为您编译的各种包(包括OpenCV)。它带有 pacman 包管理器(从 Arch Linux 移植)。它为您提供了方便的 Unix shell 环境,但工具链可以在 shell 本身之外使用。

【讨论】:

  • 我使用了预编译的 OpenCV 库,这就是错误的原因。我用 .lib 文件重建了项目,它要求提供 tbb.dll。我复制了它,它就像一个魅力。
猜你喜欢
  • 2013-06-28
  • 1970-01-01
  • 1970-01-01
  • 2012-09-09
  • 1970-01-01
  • 2013-08-24
  • 1970-01-01
  • 2015-03-29
  • 2013-07-24
相关资源
最近更新 更多