为什么将链接限制与boost :: log

Why that link limitation with boost::log

本文关键字:boost log 链接 为什么      更新时间:2023-10-16

我在多个项目中使用了boost log,刚刚发现了我应该使用/构建lib的限制,这取决于软件组件类型类型静态或共享我开发的ode,请参阅此处

库有一个单独编译的部分,该部分应如"入门指南"中所述构建。不过,应该注意一件事。如果您的应用程序由使用boost.log的多个模块(例如一个或一个或几个DLL)组成,则必须将库构建为共享对象。如果您有一个可执行的可执行文件或单个模块,可与boost.log一起使用,则可以将库构建为静态库。

有该限制的解释/原因?

这是因为此库包含具有内部链接和静态存储持续时间的对象。将此类对象放入共享库有助于确保在运行时没有此类对象的重复。

请注意,具有外部链接的静态存储持续时间对象不会遭受以下困扰:如果链接时间有重复的定义 - 链接器在运行时抱怨 - 只有第一个可用的定义是