草庐IT

ChangeReliability

全部标签

c++ - 加载 DLL 不初始化静态 C++ 类

我有一个在运行时加载的DLL。DLL依赖于内部工作的静态变量(它是一个std::map),这个变量在DLL中定义。当我在加载后调用DLL中的第一个函数时,我从DLL中得到一个SegFault,map从未被初始化。从我从DLL加载中读到的所有内容来看,静态和全局数据初始化甚至应该在调用DLLMain之前发生。为了测试静态初始化,我添加了一个打印出一条消息的静态结构,甚至还设置了一个断点以备不时之需。staticstructa{a(void){puts("Constructing\n");}}statica;在调用DLLMain或函数之前没有消息或中断。这是我的加载代码:dll=LoadL