我已经设法(以某种方式)使用Mingw-w64 Project的32位Windows编译器交叉编译Qt5。所有库都已安装到~/i686-w64-mingw32
。
我有一个基于CMake的Qt项目,我正在尝试交叉编译。通过跟随these instructions,我已经能够编译项目了。到目前为止一切都很好。
不幸的是,在Windows上执行生成的二进制文件时,我最终收到错误:
“程序入口点__gxx_personality_sj0无法位于动态链接库[application_name] .exe”
* [application_name]是主要可执行文件的完整路径
我听说这种类型的问题有时可能是由混合使用不同版本的MinGW编译的库引起的。但是这台机器上的所有内容(所有库和可执行文件)都是由同一个编译器(i686-w64-mingw32
工具链)编译的。
此外,我觉得奇怪的是,错误抱怨应用程序可执行文件中缺少入口点而不是.dll
个文件之一。
什么可能导致此错误以及可采取哪些措施来解决此问题?
答案 0 :(得分:15)
查找错误库的位置:
我的个人解决方案:
根据我的经验,MS Windows在%PATH%中选择位置的方式可能非常不稳定。上次,我添加了一个带有单个函数的源文件,并将该函数包含在我的代码中。程序总是选错了libstdc ++ - 6.dll,即使我删除了所有函数的代码并只留下了'return'语句。每次该功能被注释掉(排除)时,程序将再次正常运行。我怀疑有时Windows会从“系统变量”中选择PATH并出于某种原因避免使用“用户变量”PATH(您的Windows帐户的PATH)。
答案 1 :(得分:11)
最后,事实证明问题是由libstdc++-6.dll
中某个地方任性$PATH
造成的。确保Mingw-w64构建的副本位于应用程序目录中后,一切正常。