单例:C++ 共享 dll

Posted

技术标签:

【中文标题】单例:C++ 共享 dll【英文标题】:Singleton: C++ shared dll 【发布时间】:2012-08-28 13:48:05 【问题描述】:

我正在创建一组共享单个 dll 的 dll。

共享库有一个单例。

运行时,一些操作系统加载的库会生成我的单例的新实例。如何强制使用我的 dll 的所有库和程序始终使用我的单例的一个实例?

【问题讨论】:

你应该查一下“共享内存”这个词。 Can a Singleton Class inside a DLL be shared across processes?的可能重复 使其成为 Windows 服务或 COM 服务器/服务 【参考方案1】:

您不能只在多个进程之间共享您的单例实例。但您可以为此目的使用共享内存:

以下示例演示了 DLL 入口点函数如何使用文件映射对象来设置可由加载 DLL 的进程共享的内存。共享的 DLL 内存仅在加载 DLL 时才会存在。应用程序可以使用 SetSharedMem 和 GetSharedMem 函数来访问共享内存。

http://msdn.microsoft.com/en-us/library/windows/desktop/ms686958(v=vs.85).aspx

【讨论】:

以上是关于单例:C++ 共享 dll的主要内容,如果未能解决你的问题,请参考以下文章

C++ 线程安全的单例模式总结

使用 SWIG 从 C++ 初始化对 C# 共享指针的引用

单例模式 静态库和动态库的区别

加速共享内存操作 C++

linux C++。链接共享对象和主

Python 和 C++ 共享相同的内存资源