разделить память между dll в том же процессе - PullRequest
2 голосов
/ 22 февраля 2011

У меня есть класс с именем CMemCfg, который является одноэлементным, класс CMemCfg имеет много элементов данных, которые хранят данные конфигурации. Если я помещаю CMemCfg в server.exe, то другие библиотеки DLL должны использовать функцию обратного вызова для посещения функции (получения данных от членов-данных) в CMemCfg. Поэтому я хочу поместить класс CMemCfg (также синглтон) в dll, но это вызовет еще одну проблему, каждая функция CMemCfg должна иметь функцию экспорта, которая приводит к дублированию кода. Должен ли я просто экспортировать класс CMemCfg (singleton)? Есть ли другое решение для разделения памяти между DLL в том же процессе? Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

1 голос
/ 22 февраля 2011

Я думаю, что вы должны придерживаться экспорта класса из DLL. Чтобы экспортировать класс из dll, вам нужно только объявить, что вы экспортируете класс, а не каждую переменную-член. Вы можете использовать dll main для создания экземпляра синглтона и экспортировать функцию в соответствии с «GetSingletonObject()», чтобы позволить клиентам использовать ваш объект.

Вы можете использовать раздел общей памяти для совместного использования памяти, но я думаю, что это будет больше работы, чем просто экспорт синглтона.

1 голос
/ 22 февраля 2011

Вы можете рассмотреть инициализацию других библиотек с помощью экземпляра CMemCfg.Нет обратных вызовов, нет дублирующего экспорта, изменено (добавлено) единственное изменение - функция инициализации.

...