Здравствуйте.
Возникла такая вот задача (точнее, незадача).
Есть программа, состоящая из статически слинкованных (в разном порядке, в зависимости от настроек) статических же библиотек-компонент и функции main.
Программа должна уметь подгружать DLL на лету ну и так далее.
Прелесть в том, что ДЛЛи должны использовать код, который лежит в программе, состоящей из статически слинкованных компонент (предвосхищая вопрос — да, действительно лежит, я проверял).
Я ожидал, что оно заработает из коробки — но по факту получилось не так:
"Cannot load library /path/to/plugin/libplugin.so: (...plugin.so: undefined symbol: _ZN5app4namespace10AppClass12staticFunctionElPKcS3_S3_)"
т.е. при включении в ДЛЛ кода, который вызывает функции, которые физически должны распологаться в программе, загружающей ДЛЛ — появляется такое вот сообщение при загрузке.
Немного технических деталей:
таргет-система — линукс
в качестве инструмента загрузки используется QLibrary из Qt (успешно загружает ДЛЛ, в которых нет обращения к коду из программы)
пробовал флаги QLibrary::ResolveAllSymbolsHint, QLibrary::ExportExternalSymbolsHint — не помогло, QLibrary::LoadArchiveMemberHint — не пробовал, вроде, не о том
Собственно, вопрос такой: как заставить всё это работать, крайне желательно — по описанной выше схеме?
Спасибо.