自己编写的动态库,被加载时造成循环依赖

博客讲述了作者在创建动态库时遇到的加载循环依赖问题,导致程序运行时退出。经过排查,作者发现是由于CReaderSingleton的实例初始化方式导致的。通过逐行检查代码,最终修改了有问题的行并解决了问题。文章强调了耐心分析和记录解决问题过程的重要性,以及面对问题时保持冷静的心态。
摘要由CSDN通过智能技术生成
  1. 现象:生成的动态库,编译链接都没问题,但是在加载时,即不报错,只是卡在加载动态库的地方,过段时间后就造成程序退出
  2. 分析原因:在加载的时候,动态库中会有循环依赖,一直到栈空间满才造成程序退出
  3. 思路历程:
    • 刚开始的时候还不知道是动态库代码上有循环依赖,也不清楚这是什么原因
    • 就怀疑环境问题,然后把代码改到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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值