LINUX.ORG.RU

Расшаренные переменные в DLL


0

0

Доброго времени суток всем. Подскажите, пжалста, как в GCC создать dll с переменной, которая будет видна всем процессам, подцепившим эту dll? Для MSVS говорят так:

#pragma data_seg(".SHAREDSEG")

char SharedString[100] = {0}

#pragma data_seg ()

#pragma comment(linker, "/SECTION:.SHAREDSEG,RWS")

А что Гыцыцу сказать надо?

anonymous
Ответ на: комментарий от birdie

Не помогает. Другой процесс видит её отдельно, соответственно и изменения видятся только в пределах одного процесса.

anonymous
()
Ответ на: комментарий от Legioner

Мне нужно вести счётчик подключений этой dll-ки.

anonymous
()
Ответ на: комментарий от anonymous

> Т. е. он не может создать произвольную секцию и загнать туда переменную?

Может. Но не может сделать эту секцию разделяемой между процессам (в Винде - это наследие OS/2).

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Да мне (стыдно признаться), как раз под ма$тдай и нужно это сделать. Под AVR в Makefile нашёл следующее:

SECTION_INITPORT = 0x1de0

CFLAGS += -Wl,--section-start=.initport=$(SECTION_INITPORT)

Но в оффтопике напрямую адрес указать не получится же?

anonymous
()
Ответ на: комментарий от anonymous

> Да мне (стыдно признаться), как раз под ма$тдай и нужно это сделать.

Сдаётся мне, что это оффтопик?

Teak ★★★★★
()
Ответ на: комментарий от anonymous

Тебе нужно смотреть специфичные для оффтопика опции ld. То есть план таков - кладешь переменную в секцию, потом линковщиком делаешь этой секции атрибут "разделяемая". Как _конкретно_ это сделать - не знаю, ибо в винде не работаю.

Кстати, разделяемая память есть и в винде :)

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Да есть, но там настолько коряво IPC реализованы (ну, может, кроме спёртых сокетов), что просто ужас. Пробовал с pipes недавно работать - чуть не удавился...

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.