Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Qt文件太大。_C++_Qt_Dll_Static_Executable - Fatal编程技术网

C++ Qt文件太大。

C++ Qt文件太大。,c++,qt,dll,static,executable,C++,Qt,Dll,Static,Executable,经过数小时的搜索和尝试,我无法获得如何将库静态链接到我的exe。 因此,我尝试将依赖项复制到exe文件夹中。 我制作了一个测试程序,只需点击一个按钮就可以更改标签。 这是14MB。 我该怎么办? 我正在使用 icudt51.dll icuin51.dll icuuc51.dll libgcc_s_dw2-1.dll libstdc++-6.dll libwinpthread-1.dll Qt5Core.dll Qt5Gui.dll Qt5Widgets我认为唯一可行的方法是使用upx压缩可执行文

经过数小时的搜索和尝试,我无法获得如何将库静态链接到我的exe。 因此,我尝试将依赖项复制到exe文件夹中。 我制作了一个测试程序,只需点击一个按钮就可以更改标签。 这是14MB。 我该怎么办? 我正在使用 icudt51.dll icuin51.dll icuuc51.dll libgcc_s_dw2-1.dll libstdc++-6.dll libwinpthread-1.dll Qt5Core.dll Qt5Gui.dll
Qt5Widgets

我认为唯一可行的方法是使用upx压缩可执行文件。你甚至不会注意到区别。它解压和执行你的程序如此之快


您的问题有很多解决方案:

1-使用Qt 4.8.5,Qt 5和Qt 4.8之间没有太大差异。这将对您有所帮助,因为Qt 4.8.5未使用QtWebkits的默认支持进行编译,这意味着不依赖于icudt51.dll icuin51.dll icuuc51.dll文件

2-如果您希望使用Qt5,您需要在禁用webkit的情况下重新编译它,这也将使您摆脱上述依赖关系。 有关详细信息,请查看:

如果您想按原样静态链接Qt 5.1.1(无第三方补丁),它只适用于源代码内部版本。由于zlib克隆中的错误,卷影静态生成失败。仅使用小部件的upx-ed简单可执行文件将低于5mb,更像3mb。Qt 5和Qt 4的大致相同。我正在使用MSVC2012静态编译这两个文件,它运行得很好。这些都是完整的静态构建,这意味着Qt库是静态的,C/C++运行时也是静态的。唯一的依赖项是系统DLL。使每个人的生活都变得轻松,尽管发布版本可能需要几分钟,并且忘记在32位系统上构建


静态构建的可执行文件的启动时间是惊人的。它几乎是即时的:)

你不能静态链接到.dll,你的意思是你最终会动态链接吗?请注意,要静态链接到Qt库,你的代码必须在GPL或LGPL下获得许可,或者你必须支付商业Qt许可证。如果您的代码不满足这些条件之一,则不允许静态链接到Qt。是的,Qt文件很大!您尝试过静态链接什么?(您需要使用-static标志构建自己)我不知道如何使用-static。我应该在哪里补充呢?我是全新的。