在Linux上为Windows交叉编译Qt5

4
我最近使用了这篇指南,在Linux上交叉编译Windows程序:Building Qt 5 on Linux, for Windows 然而,当我编译程序时,生成的可执行文件损坏,无法运行程序。相反,会出现错误并只有关闭选项。如果有人能够提供答案,说明为什么会这样做,将不胜感激。以下是一些事实,请在您的回答中具体说明(例如,如果原因是我可能已经使用了GUI中Windows不支持的内容,请提供两个操作系统之间不可用的示例)。我在Qt的使用方面大约处于入门级别,如果我需要进一步解释答案,请事先原谅我。
  • 使用Qt Creator 2.8.1(基于5.1.1)进行编译
  • 使用Crunchbang 11(基于Debian 7.0)
  • 通过使用“cd mxe && make qtbase”和随后的“cd mxe && make qt5”进行测试
  • 执行程序产生的错误(wine):Pastebin:Wine 错误
  • 程序执行时终端显示的调试信息:Pastebin:调试信息
  • 在典型的Windows 7环境中无法工作
  • 构建日志:Pastebin:构建日志
我可能需要几个小时才能跟进。非常感谢每个提供积极帮助的人。

你用的是什么系统?也许有一个使用mingw构建的qt,你可以通过软件包管理器直接安装。另外,compcal是什么,它与Pokemon有什么关系? ;) - user3125280
1
错误似乎是由您的代码引起的空指针访问。 - user3125280
请问您能否展示构建日志? - László Papp
看起来类似的错误是由于Wine的DLL缺少了一些功能。有些东西的功能实际上是缺失的:)你在Windows上试过吗?也许可以尝试使用“winetricks comctl32 at a shell”修复它。 - user3125280
@LaszloPapp 很好的发现 - 错误与一些缺乏适当的comctl32 dll的错误一致,不过已经排除了吗? - user3125280
显示剩余3条评论
1个回答

1
我成功地在ArchLinux上为Windows交叉编译了一个程序。
你的Windows机器上是否有所有必要的dll文件?
这是我的目录列表:

platforms <DIR>
 - qminimal.dll
 - qwindows.dll
sqldrivers <DIR>
 - qsqlite.dll
icudt51.dll
icuin51.dll
icuuc51.dll
libgcc_s_dw2-1.dll
libstdc++-6.dll
libwinpthread-1.dll
Qt5Core.dll
Qt5Gui.dll
Qt5Sql.dll
Qt5Widgets.dll

拥有正确版本的所有dll也是至关重要的。这些必须与用于交叉编译的MinGW版本相匹配。此外,平台目录及其两个dll也是必需的。对于我的应用程序,我还需要SQLite支持,因此需要创建另一个子目录以获取所需的dll。


我马上会检查,因为我正在安装虚拟操作系统以加快测试速度。 - Ruiz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接