1 c++ static-variables dead-code
我有一个使用我制作的静态库的应用程序.库中的一个.cpp文件有一个静态变量声明,其ctor在单例上调用一个函数来执行某些操作 - 例如添加一个字符串.
现在,当我从应用程序中使用该库时,我的单例似乎不包含应该添加的字符串的任何痕迹.
我肯定错过了一些东西,但我不知道是什么......
如果您有这不是一个静态库的对象明确标明应用程序中使用.然后链接器不会将该对象从lib拉入应用程序.
静态库和动态库之间存在很大差异.
动态库:
在编译时,动态库中没有任何内容.添加额外代码以在运行时显式加载和解析符号.在运行时,加载整个库,从而调用对象初始化程序(尽管实现细节时).
静态库的处理方式非常不同:
当您链接到静态库时,它会将库中定义的应用程序中未定义的所有项目提取到应用程序中.重复此过程,直到库不再有可解析的依赖关系为止.这样做的副作用是未明确使用的对象/函数不会从库中拉出(因此不会拉动未直接访问的全局变量).