延迟第三方库中静态变量的初始化
Delay initialisation of static variables in a 3rd party library
我正在链接到使用静态变量的第三方库。这些最终会在main
之前初始化并过早地抢夺资源,从而对我的应用程序造成一些破坏。是否有任何习语/技术/包装方法,以重新获得控制权并定义允许库初始化其所有静态变量而不入侵库本身的执行点?
具体来说,我有一个thirdpartylib::system
对象,一旦在 main 中定义,就会在输入 main 之前获取各种资源。编译器看到代码可以被命中,然后开始初始化其所有静态变量,不受库使用者的控制。理想情况下,我希望某种警卫阻止这种情况,直到我这么说,比如..
// my code that may exit before I want the lib stuff to be invoked
{
LET_SYSTEM_RUN_RIOT();
thirdpartylib::system sys;
// do some stuff with it
KILL_IT_ALL_WITH_FIRE();
}
您唯一能做的就是动态构建它,并在运行时通过dload/LoadLibrary加载它。然后,您可以完全控制库何时初始化自身。通过静态链接,您在概念上使库成为应用程序的一部分,这意味着它将作为应用程序的一部分进行初始化,即在您的主函数之前。
相关文章:
- 为什么C++有不同的变量初始化方式?
- 静态 constexpr 成员变量初始化
- C++不同的变量初始化
- 全局和局部变量初始化与 constexpr 的差异背后的基本原理
- 是变量初始化失败吗?
- 视觉C++:在 DLL 加载期间,全局变量初始化顺序是否具有确定性?
- 类静态变量初始化顺序
- 使用 constinit 变量初始化 constexpr 变量
- 是否可以在不修改父类的情况下将成员变量初始化推迟到继承的类?
- 使用全局变量初始化不同编译单元中的其他全局变量
- 使用默认构造函数引用成员变量初始化错误
- 宏的 if 语句中的变量初始化
- 不稳定的C :每行适应性变化多变量初始化
- 同一函数中的静态函数变量初始化顺序
- C 语言中的静态变量初始化
- 错误:调用'begin(long double [nPoints])'没有匹配函数;使用硬编码的 int 与整数变量初始化向量
- 类POD成员变量初始化
- 尝试捕获类变量初始化的范围
- 共享库中 __attribute__((构造函数)) 的全局/静态变量初始化问题
- 多变量初始化编译器支持