gpt4 book ai didi

c++ - 程序入口点 __gxx_personality_sj0 无法位于...

转载 作者:IT老高 更新时间:2023-10-28 22:12:13 27 4
gpt4 key购买 nike

我已经设法(不知何故)用 Mingw-w64 项目的 32 位 Windows 编译器交叉编译 Qt5。所有的库都已经安装到~/i686-w64-mingw32

我有一个基于 CMake 的 Qt 项目,我正在尝试交叉编译。关注 these instructions ,我已经能够让项目编译。到目前为止一切顺利。

不幸的是,在 Windows 上执行生成的二进制文件时,我最终得到一个错误:

"The procedure entry point __gxx_personality_sj0 could not be located in the dynamic link library [application_name].exe"

* [application_name] 是主可执行文件的完整路径

我听说这种类型的问题有时可能是由混合使用不同版本的 MinGW 编译的库引起的。但是这台机器上的所有东西(所有的库和可执行文件)都由同一个编译器(i686-w64-mingw32 工具链)编译。

此外,我发现奇怪的是错误提示应用程序可执行文件中缺少入口点,而不是 .dll 文件之一。

什么可能导致此错误以及可以采取哪些措施来纠正它?

最佳答案

查找错误库的位置:

  • 打开命令提示符。
  • 键入“libstdc++-6.dll”并按“Enter”
  • 应该会出现一个带有路径和消息的消息框:c:/somefolder/someapp/.../libstdc++-6.dll 此文件没有与之关联的程序...等等,等等。路径就是答案。
  • 在 IDE 中运行您的应用:IDE 中的 %PATH% 可能是与命令提示符中的 %PATH% 不同(请参阅 IDE 设置)。在在这种情况下,将“libstdc++-6.dll”放入批处理文件并运行IDE 中的批处理应显示哪个特定实例您的程序正在使用的库。

我的个人解决方案:

  • 打开“系统属性”->“环境变量”(在 Windows 7 中,在我的例子中)并确保两个 %PATH% 变量(您的帐户和系统范围的变量 %PATH%)都以 c 开头:\mingw\bin (或您为该库提供的任何路径)。此外,您可能需要重新启动 IDE 才能选择新的 PATH。

根据我的经验,MS Windows 在 %PATH% 中选择位置的方式可能非常不稳定。上次,我添加了一个具有单个函数的源文件,并将该函数包含在我的代码中。即使我删除了所有函数的代码并且只留下了“return”语句,该程序总是会选择错误的 libstdc++-6.dll。每次该函数被注释掉(排除)时,程序都会再次正常运行。我怀疑有时 Windows 会出于某种原因从“系统变量”中选择 PATH 并避免使用“用户变量”PATH(您的 Windows 帐户的 PATH)。

关于c++ - 程序入口点 __gxx_personality_sj0 无法位于...,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14889407/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com