C++ 无法在…中找到程序入口点uuu gxx_personality_sj0。。。

C++ 无法在…中找到程序入口点uuu gxx_personality_sj0。。。,c++,windows,cross-compiling,mingw-w64,C++,Windows,Cross Compiling,Mingw W64,我已经设法(以某种方式)将Qt5与Mingw-w64项目的32位Windows编译器交叉编译。所有库都已安装到~/i686-w64-mingw32 我有一个基于CMake的Qt项目,我正在尝试交叉编译。通过以下步骤,我已经能够编译该项目。到目前为止还不错 不幸的是,在Windows上执行生成的二进制文件时,我最终得到一个错误: “在动态链接库[application\u name].exe中找不到过程入口点\uuuuGxx\u Personal\u sj0” *[application_name

我已经设法(以某种方式)将Qt5与Mingw-w64项目的32位Windows编译器交叉编译。所有库都已安装到
~/i686-w64-mingw32

我有一个基于CMake的Qt项目,我正在尝试交叉编译。通过以下步骤,我已经能够编译该项目。到目前为止还不错

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

“在动态链接库[application\u name].exe中找不到过程入口点\uuuuGxx\u Personal\u sj0”

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

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

另外,我发现奇怪的是,错误抱怨应用程序可执行文件中缺少入口点,而不是
.dll
文件中的一个


什么可能导致此错误以及可以采取什么措施来补救它?

最后,问题被证明是由
$PATH
中某个任性的
libstdc++-6.dll
引起的。确保由Mingw-w64生成的副本位于应用程序的目录中后,一切正常。

找到错误库的位置:

  • 打开命令提示符
  • 键入“libstdc++-6.dll”并点击“回车”
  • 消息框应显示路径和消息:c:/somefolder/someapp/../libstdc++-6.dll此文件没有与之关联的程序。。。等等等等。 路径就是答案。
  • 在IDE中运行应用程序时,IDE中的路径% 与命令提示符中的%PATH%不同(请参见IDE设置)。在里面 在这种情况下,将“libstdc++-6.dll”放入批处理文件并运行 IDE中的批处理应该显示哪个特定实例 您的程序正在接收的库的
我的个人解决方案:

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


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

也许您使用的是使用不同版本编译的软件version@didierc:我只安装了一个版本的Mingw-w64。我想知道您是否有使用不同版本的Mingw编译的软件,而不是您是否使用了不同版本的Mingw。您的回答正好反映了我的假设,即在某个地方,另一个软件正在使用一个不同版本的lib,并且它与您编译的软件发生了某种干扰。我想我说得不够好,但你明白了,真是太好了!创建路径时,将您的路径附加到当前路径之前,如
path=/my/path;%PATH%
谢谢!我有一个错误“在动态链接库libstdc++-6.dll中找不到过程入口点uuu gxx_upersonality_sj0”,重命名“c:\Windows\SysWOW64\libstdc++-6.dll”有效!在构建源代码之前,可以方便地运行
where libstdc++-6.dll
。在我的例子中,在mingw条目出现之前,我在路径变量中安装了Anaconda。我从windows目录中删除了dll,它正常工作了。也就是说,这可能不是我想通过电话给人们的指令,让我的程序在他们的计算机上运行。哦,该死的。。。