Доброе время суток!Подскажите, пожалуйста, можно-ли использовать DL библиотеку (для создания динаически загружаемых модулей) с g++?
Сразу скажу, что у меня такая конструкция не работала...
>Подскажите, пожалуйста, можно-ли использовать DL библиотеку (для создания
>динаически загружаемых модулей) с g++?
>
>Сразу скажу, что у меня такая конструкция не работала...А что, собственно, помешало? При компиляции объектников для библиотеки
используется флаг '-fPIC', при линковке самой библиотеки - флаг '-shared',
а дальше dlopen() + dlsym().
Я так всё и делаю. Вопрос немного не в том состоял. Всй работает, когда модуль написан на С и компилируется gcc, если писать на С++ и компилировать g++, dlopen() и dlsym()проходят без проблемм, а при вызове загруженной функции из модуля выдетает в корку.
>Я так всё и делаю. Вопрос немного не в том состоял. Всй
>работает, когда модуль написан на С и компилируется gcc, если писать
>на С++ и компилировать g++, dlopen() и dlsym()проходят без проблемм, а
>при вызове загруженной функции из модуля выдетает в корку.Если пишете на С++ надо указать extern "C"
Спасибо! Так всё заработало!
>Спасибо! Так всё заработало!Где-то читал, что С++ свойственно подменять имя функции. С - такого не делает. Потому extern "C" должен эту проблему решать
>Где-то читал, что С++ свойственно подменять имя функции. С - такого не
>делает. Потому extern "C" должен эту проблему решатьМнда, оказывается C++-компилятор - мастер-фальшивоимённик.
Весьма интересная интерпретация name mangling...