gpt4 book ai didi

qt4 - 从 Fedora 12 上的 MinGW 交叉编译到 Windows - 控制台窗口?

转载 作者:行者123 更新时间:2023-12-01 00:02:56 25 4
gpt4 key购买 nike

看完这篇文章http://lukast.mediablog.sk/log/?p=155我决定在 linux 上使用 mingw 来编译 windows 应用程序。这意味着我可以直接从 Linux 编译、测试、调试和发布。

我破解了这个构建脚本,它将交叉编译应用程序,甚至将它打包到一个 ZIP 文件中。请注意,我正在使用 QMake 的源代码构建(您甚至知道这是受支持的吗?哇...)。另请注意,该脚本将自动提取所需的 DLL。这是所有互联网使用和滥用的脚本:

#! /bin/sh

set -x
set -e

VERSION=0.1
PRO_FILE=blabla.pro
BUILD_DIR=mingw_build
DIST_DIR=blabla-$VERSION-win32

# clean up old shite
rm -fr $BUILD_DIR
mkdir $BUILD_DIR
cd $BUILD_DIR

# start building
QMAKESPEC=fedora-win32-cross qmake-qt4 QT_LIBINFIX=4 config=\"release\ quiet\" ../$PRO_FILE
#qmake-qt4 -spec fedora-win32-cross
make

DLLS=`i686-pc-mingw32-objdump -p release/*.exe | grep dll | awk '{print $3}'`
for i in $DLLS mingwm10.dll ; do
f=/usr/i686-pc-mingw32/sys-root/mingw/bin/$i
if [ ! -f $f ]; then continue; fi
cp -av $f release
done

mkdir -p $DIST_DIR
mv release/*.exe $DIST_DIR
mv release/*.dll $DIST_DIR
zip -r ../$DIST_DIR.zip $DIST_DIR

编译后的二进制文件可以在我测试的 Windows7 机器上运行。现在的问题:
  • 当我在 Windows 上执行应用程序时,主题不是 Windows7 主题。我假设我缺少一个样式模块,我还不确定。
  • 应用程序出于某种原因获得了一个控制台窗口。

  • 第二点(控制台窗口)很关键。如何删除此背景窗口?请注意,额外的配置行对我不起作用,我在那里缺少什么?

    编辑1(计划一些):

    编译行是:
    i686-pc-mingw32-g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -Wl,-s -o release/font_export.exe object_script.font_export.Release  -L"/usr/i686-pc-mingw32/sys-root/mingw/lib" -lQtGui4 -lQtCore4 
    -subsystem,windows仅当“CONFIG+=windows”时才添加开关,并且在其他操作系统中被忽略。我的猜测是 Qt 的 MinGW 端口变得困惑“我在 Linux 上运行,我需要忽略 windows/console 配置”。这意味着我需要编辑相应的 qmake.spec 文件。啊……我讨厌 bug 。我仍然需要验证这是否解决了问题....

    最佳答案

    我怀疑您的主题问题是缺少 application manifest 的结果。

    您的应用程序获得控制台的原因很简单。 Windows 应用程序有两种风格,控制台和 GUI。不同之处在于 EXE 的 PE header 。 GCC 的默认设置是生成一个控制台应用程序,e8johan 解释了如何更改它(-Wl,-subsystem,windows)。还有一些关于入口点的玩弄(GUI 应该使用 WinMain() 和控制台应用程序 main() )但是 MinGW should take care of that

    关于qt4 - 从 Fedora 12 上的 MinGW 交叉编译到 Windows - 控制台窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2615058/

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