Есть библиотека с функцией которая возвращает контейнер. Примерно такая: std::set<std::string> function();
Библиотеку нужно загружать динамически, значит чтобы найти эту функцию нужно убрать декорацию, как это сделать? extern "C" использовать не получится, так как функция возвращает класс С++. Под Windows вроде можно использовать def файл, но как сделать такое под Linux?
Если под загружается динамически имеется ввиду линковка с .so , то это работает (пишу на всякий случай, мало ли).
Убирать декорацию в самой библиотеке как мне кажется не самая лучшая мысль, но есть другой путь.
Вам нужно в библиотеке объявить С функцию, которая вернёт нужные вам указатели на С++ функции.
Это совершенно адекватный способ, например Qt использует похожий подход только функция конструирует объект наследованный от QPlugin
Не уверен что хорошая идея возвращать из библиотеки подобные вещи. Т.к. реализация контейнеров не фиксируется. Поэтому лучше обойтись более простыми типами, или более сложными типа интерфейсов енумераторов самописных или COM.
Если библиотека линкуется статически и предполагается один компилятор то на декорацию стоит забить.