Кроссплатформенный загрузчик динамических библиотек C ++ - PullRequest
8 голосов
/ 20 октября 2010

Мне было просто интересно, какие у меня были варианты кросс-платформенных реализаций для динамической загрузки плагинов с использованием разделяемых библиотек. Пока единственное, что я нашел, это:

И мне было просто интересно, есть ли у меня другие варианты? По сути, я хочу иметь возможность помещать плагины в общие объектные файлы и загружать их во время выполнения, и я хотел сделать это кроссплатформенным способом C ++.

Редактировать : Я нашел это Сообщение Доктора Доббса с 2007 года; с тех пор кто-то придумал что-то большее.

Ответы [ 3 ]

7 голосов
/ 20 октября 2010

Вы можете посмотреть Boost Extension, , хотя оно еще не было принято в Boost.

Библиотека Boost.Extension была разработана для облегчения разработки плагинов ианалогичные расширения программного обеспечения с использованием общих библиотек.Классы, функции и данные могут быть доступны из общих библиотек и загружены приложением.

3 голосов
/ 20 октября 2010

Qt имеет хорошую систему плагинов . Вы должны взглянуть на вторую часть этой страницы.

0 голосов
/ 27 сентября 2016

Если вы хотите что-то простое и легкое, попробуйте: https://pocoproject.org/docs/package-Foundation.SharedLibrary.html

Используя класс SharedLibrary, требуется три строки для вызова функции в общей библиотеке C:

Poco::SharedLibrary lib("libfoo.so");
int (* foo)(int) = reinterpret_cast<int (*)(int)>(lib.getSymbol("foo"));    
printf("answer %d\n", foo(5));
...