Запуск всего этого приведет к следующей ошибке:
Cannot open library "./libexamplefilter.so" ./libexamplefilter.so: undefined symbol: _ZTI10BaseFilter
Поскольку код довольно маленький и понятный, вы сможете понять его сразу.
Кто-нибудь знает, что не так?
Должен ли я сделать, а объявить create () как extern "C" void * create (void);
и затем привести указатель void вместо прямой попытки связать символы c ++?
Следующий шаг
после использования -Wl,-export-dynamic
, он говорит мне:
Cannot load library symbols "./libexamplefilter.so" ./libexamplefilter.so: undefined symbol: create
Э-э, мне нужно дать искаженное имя c ++ вместо "dlsym (handle," create ")". Наверное. Есть ли элегантный способ сделать это?
Ответом является объявление create () extern "C" ... create ....
Это прекрасно работает.
Задача решена. Спасибо за вашу помощь и терпение.