- 现象:生成的动态库,编译链接都没问题,但是在加载时,即不报错,只是卡在加载动态库的地方,过段时间后就造成程序退出
- 分析原因:在加载的时候,动态库中会有循环依赖,一直到栈空间满才造成程序退出
- 思路历程:
- 刚开始的时候还不知道是动态库代码上有循环依赖,也不清楚这是什么原因
- 就怀疑环境问题,然后把代码改到vs2015上,最后还是一样的现象
- 然后怀疑自己所用vcpkg下载的开源代码库有问题,然后自己从github上把所有需要加载的动态库代码下载下来,自己编译,然后依赖,发现还是同样的现象
- 最后没办法,拆分代码,一个模块一个模块的价值,看是哪个模块造成的问题,最后发现工程中加入了下面的文件后就会出现上面的现象
class CReaderSingleton :public CJsonCommon
{
public:
static CReaderSingleton *GetInstance(CReaderInterface *pInterface);
private:
CReaderSingleton();
virtual ~CReaderSingleton() {};
protected:
static CReaderSingleton *m_pReaderSingleton;
};
CReaderSingleton *CReaderSingleton::m_pReaderSingleton = new CReaderSingleton();
mutex g_singleton_m;
CRea