创建静态库时,是否需要包含每个依赖项?
When creating a static library, do you need to include every single dependency?
希望我解释得足够好,以免造成混淆。
假设我正在创建一个名为 "SimpleImage" 的静态库。它使用两个外部静态库:GraphicsMagick++ 和 libsquish。在我的附加依赖项中,我包括 libsquish.lib
和 CORE_RL_Magick++.lib
,以及这些库的依赖项(例如,GraphicsMagick 需要 CORE_RL_png.lib
和 CORE_RL_bzlib.lib
)。
现在,假设我有另一个名为 "SimpleGraphics" 的静态库。它的依赖项之一是我的静态库 "SimpleImage"。现在,我的问题是,我还需要包括 libsquish.lib
、CORE_RL_Magick++.lib
、CORE_RL_png.lib
等吗?或者那会是多余的吗?
我问的原因是因为我注意到我的静态库在编译时很大,我很好奇这是否是罪魁祸首。当我最终将 "master" 静态库包含在 DLL 或可执行文件中时,它们的大小也变得臃肿。还有另一个程序使用与我完全相同的库,还有更多(BOOST、XML 库等),并且 exe 比我的可执行文件(5,503 MB!)小得多(3,141 MB) .我的实际代码库比这个其他程序小得多。是的,我已开启所有优化。
我只想知道是否有必要添加所有这些额外的依赖项。
在将 SimpleImage.lib
创建为静态库时,您不需要将 libsquish.lib
和 CORE_RL_Magick++.lib
作为附加依赖项包含在内。
您也不需要在创建 SimpleGraphics.lib
作为静态库时包含它们。
只有在创建 EXE 或 DLL 时才需要指定 "Additional Dependencies"。
希望我解释得足够好,以免造成混淆。
假设我正在创建一个名为 "SimpleImage" 的静态库。它使用两个外部静态库:GraphicsMagick++ 和 libsquish。在我的附加依赖项中,我包括 libsquish.lib
和 CORE_RL_Magick++.lib
,以及这些库的依赖项(例如,GraphicsMagick 需要 CORE_RL_png.lib
和 CORE_RL_bzlib.lib
)。
现在,假设我有另一个名为 "SimpleGraphics" 的静态库。它的依赖项之一是我的静态库 "SimpleImage"。现在,我的问题是,我还需要包括 libsquish.lib
、CORE_RL_Magick++.lib
、CORE_RL_png.lib
等吗?或者那会是多余的吗?
我问的原因是因为我注意到我的静态库在编译时很大,我很好奇这是否是罪魁祸首。当我最终将 "master" 静态库包含在 DLL 或可执行文件中时,它们的大小也变得臃肿。还有另一个程序使用与我完全相同的库,还有更多(BOOST、XML 库等),并且 exe 比我的可执行文件(5,503 MB!)小得多(3,141 MB) .我的实际代码库比这个其他程序小得多。是的,我已开启所有优化。
我只想知道是否有必要添加所有这些额外的依赖项。
在将 SimpleImage.lib
创建为静态库时,您不需要将 libsquish.lib
和 CORE_RL_Magick++.lib
作为附加依赖项包含在内。
您也不需要在创建 SimpleGraphics.lib
作为静态库时包含它们。
只有在创建 EXE 或 DLL 时才需要指定 "Additional Dependencies"。