一个dll的单身班
发布时间:2021-01-24 05:52:52 所属栏目:Windows 来源:网络整理
导读:我创建了一个类的静态库: class CLog{ private: CLog(); ... ... public: static CLog GetInstance() { static CLog Instance; return Instance; } void Write(char *cpPr);};#define Log CLog::GetInstance() 这个图书馆链接到一个dll和一个主程序.该DLL由
我创建了一个类的静态库: class CLog { private: CLog(); ... ... public: static CLog& GetInstance() { static CLog Instance; return Instance; } void Write(char *cpPr); }; #define Log CLog::GetInstance() 这个图书馆链接到一个dll和一个主程序.该DLL由LoadLibrary加载.在这种情况下,显而易见的是,在主exe和dll中调用Log.Write会创建两个单独的CLog实例.任何想法如何解决这个问题,仍然提供动态加载dll? 问题是,连接静态库的每个项目(无论是主程序还是DLL)都将获得静态变量的单独副本.这打破了创建单身的典型方法.最简单的方法是创建另一个保存单例的DLL,而不是一个静态库.由于只有一个链接器输出将包含静态变量,因此问题得到解决. 在我自己的情况下,我创建了一个单身经理,通过一个独特的GUID来识别每个单例,并确保只有一个副本存在于应用程序范围内.单身人士管理人员作为自己的DLL存在. (编辑:西安站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Windows Azure与传统Windows主机有什么区别?
- 10款Windows实用软件推荐,满满的干货,建议大家低调收藏!
- hyper-v-server-2012 – 在Hyper-V Server 2012 R2上正确删
- 在Server 2012上安装Windows Management Framework 4.0(Pow
- 如何检查多个远程Linux系统是否打开了指定端口?
- 如何修复Windows 10上的错误0xa00f4292
- 如何在Windows 2012 RDP中禁用TLS 1.0
- 如何在Linux中安装、配置和使用Fish Shell?
- 不符合Win11要求设备升级会被打水印 破解方法来了
- exchange-2010 – 无法从O365共享日历忙/闲信息到外部联盟域
站长推荐
热点阅读