【发布时间】:2012-03-19 21:17:28
【问题描述】:
如果我发布一个内置于 QT 框架的程序:
1) 如何找到需要包含的 DLL
2) 我必须包含 DLL 还是代码编译到 EXE 中
程序很简单,就是一个界面,有两个文本框和一个按钮。
我只是不想在 QT DLL 中为 100KB 的 EXE 文件使用 5MB。
【问题讨论】:
如果我发布一个内置于 QT 框架的程序:
1) 如何找到需要包含的 DLL
2) 我必须包含 DLL 还是代码编译到 EXE 中
程序很简单,就是一个界面,有两个文本框和一个按钮。
我只是不想在 QT DLL 中为 100KB 的 EXE 文件使用 5MB。
【问题讨论】:
除非您静态链接(这需要静态 Qt,您需要从源代码构建),否则您需要发布 DLL。
要找出需要哪些 DLL,您可以使用Dependency Walker 之类的东西,或者在编译/生成的 Makefile 时检查链接行。
通常是它的 QtCore、QtGui 以及您在 .pro 文件中明确配置的任何内容,例如 CONFIG += xml、CONFIG += webkit 或 CONFIG += network 等。
我希望在每种情况下都只有几 MB,即使您自己的代码只有几 KB(毕竟只有几 KB,因为 Qt 完成了所有繁重的工作)。
【讨论】:
如果将静态库链接到可执行文件中,则不需要 DLL。
如果您将共享库链接到您的可执行文件中,您将需要 DLL。
如果您查看命令行并查看 /MT 或 /MD 分别表示静态和共享,您就可以知道您正在针对哪些进行编译。
如果许可证允许您包含静态库,这通常是一个更简单的解决方案。
【讨论】: