在同一进程中共享dll之间的内存

时间:2011-02-22 08:37:03

标签: c++ memory dll share

我有一个名为CMemCfg的类,它是一个单例,CMemCfg类有很多数据成员存储配置数据。如果我将CMemCfg放在server.exe中,那么其他dll应该使用回调函数来访问CMemCfg中的函数(从数据成员获取数据)。所以我想把CMemCfg类(也是一个单例)放在一个dll中,但这会引起另一个问题,CMemCfg的每个函数都应该有一个导出代码重复的导出函数。 我应该只导出CMemCfg(单例)类吗? 是否有另一种解决方案在同一进程中的dll之间共享内存? 任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

您可以考虑使用CMemCfg实例初始化其他dll。没有回调,没有重复导出,唯一的变化是修改(添加)初始化函数。

答案 1 :(得分:1)

我认为你应该坚持从DLL导出类。要从dll导出类,只需要声明要导出类,而不是每个成员变量。您可以使用dll main创建单例实例,并沿“GetSingletonObject()”行导出一个函数,以允许客户端使用您的对象。

您可以使用共享内存部分来共享内存,但我认为这比仅导出单例更有用。