0

我在多个项目中使用了 boost log,只是发现了我应该使用/构建 lib 的方式的限制,具体取决于软件组件类型 static 或 shared 我开发 ode 请参见此处

该库有一个单独编译的部分,应按照入门指南中的说明进行构建。不过,应该注意一件事。如果您的应用程序包含多个使用 Boost.Log 的模块(例如,一个 exe 和一个或多个 dll),则该库必须构建为一个共享对象。如果您有一个可与 Boost.Log 一起使用的可执行文件或单个模块,则可以将该库构建为静态库。

对此限制有解释/原因吗?

4

1 回答 1

1

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

请注意,具有外部链接的静态存储持续时间对象不会受到此影响:如果在链接时存在重复定义 - 链接器在运行时抱怨 - 仅使用第一个可用定义。

于 2014-02-05T20:35:13.053 回答