LINUX.ORG.RU

перенос под оффтопик вызова get/setdlopenflags?

 ,


0

1

Есть у меня библиотека (С++/python) для числодробления, в частности в ней некоторое количество шаблонных контейнеров С++ собираются в питоньи модули с какими то заданными параметрами. Каждый контейнер с фиксированным набором параметров собирается в отдельную so-шку, через свиг. Для контейнеров есть всякая визуализация.

Кое какие контейнеры юзают глобальные таблицы с разделяемой информацией. Раньше была проблема - при подключении в один процесс нескольких so-шек у каждой был свой набор глобальных таблиц. Спасает строчка

import sys; sys.setdlopenflags(0x00100|sys.getdlopenflags())
перед импортированием so-шки.

Сейчас возникла необходимость портировать вьюверы под винду. После некоторых танцев с бубном удалось кросскомпильнуть mingw все что нужно, но проблема с таблицами всплыла - в виндовом sys нету set/getdlopenflags. И выгуглить чего то не удалось ниче;-(

★★★★★

Выносишь таблицы в отдельную dll, с которой компонуешь все остальные. В dll все символы должны быть разрешены на этапе компоновки. Про __declspec(dllimport) и __declspec(dllexport) ты конечно же знаешь?

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

Конечно же не знаю. Я под винду длл делал лет 15ть назад, и то было неправда;-(

Категорически не хочется вдаваться в эти интимные подробности. Т.е. под виндой при подключении нескольких dll сделать общую таблицу малой кровью невозможно? Если ответ нет, то я наверное просто соберу один тооооолстый модуль и хрен бы с ними со всеми... ;-(

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

Спасибо! В итоге собрал один большой модуль, проще добавить две строчки в Makefile чем ковыряться в виндовых кишочках;-)

AIv ★★★★★
() автор топика
Последнее исправление: AIv (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.