我注意到部署在windows应用程序上的总是包括它们需要的dll。他们为什么要那样做?为什么他们不能像在linux上那样做呢?--您将所需的Qt版本安装到系统,然后每个需要它的应用程序都可以使用它,例如,只有一个库实例(不包括Qt 4/qt5这样的不同版本)。
如果您安装Java/..Net,然后只使用一个库实例(Dll)来运行/开发应用程序,那不是更好吗?
我觉得这有点“不保守”:我有7个应用程序使用Qt5,所有应用程序都有Qt5Core.dll、Qt5GUI.dll等,每个应用程序都占用一些空间。感觉我有7包Qt5库..。x_x
而在linux上,这些应用程序只使用“一个”Qt库。
发布于 2020-03-09 08:06:42
我注意到部署在windows应用程序上的总是包括它们需要的dll。
这被称为“本地部署”。
他们为什么要那样做?
我可以想出几个理由。
您将所需的Qt版本安装到系统中,然后每个需要它的应用程序都可以使用它,例如,只有一个库实例(不包括Qt 4/Qt 5这样的不同版本)。
Qt是一个C++库。C++ DLL的差异可以不仅仅是一个主要版本号。DLL可以用MinGW构建,也可以用MSVC构建;可以是32位,也可以是64位。不同的变体互不相容。
示例:如果您强制一台PC拥有Qt5.14.1 MSVC 32位的全局副本,并将其放在您的路径中,那么:
为什么他们不能像在linux上那样做呢..。在linux上,同样的应用程序只使用“一个”Qt库。
我在上面列出了这种方法的一些缺点。此外,Linux发行版中的Qt版本通常落后几个版本,因此发行版存储库中的应用程序不能使用最新的特性、补丁或改进。
这就是为什么像AppImage与Snapcraft这样的系统被发明的原因之一。有时,Linux用户也希望应用程序包含其库的副本,而不是拥有库的一个全局副本。
https://stackoverflow.com/questions/60596053
复制相似问题