Всем привет.
Не могу никак понять, почему не видна функция в динамически подгруженной библиотеке (самописной), которая реализована в самом приложении
module.h:
class A() {
public:
static A* get_instance();
private:
A();
static A *ptr;
}
module.cpp:
A* A::ptr=0;
A* A::get_instance() {
if(ptr==0) {
ptr = new A();
}
return ptr;
}
A* instance() {
return A::get_instance();
}
Теперь код библиотеки
#include "..../module.h"
extern "C" A* instance();
A *p = instance();
module.cpp линкуется только в приложение, там создается «одиночка» и ведется с ним работа. Далее в какой то момент времени подключается библиотека. Я хочу чтобы эта библиотека использовала этого же «одиночку». Все прекрасно компилится. Но когда я запускаю программу, то в момент подключения библиотеки выдает следующую ошибку:
./application: symbol lookup error: .../libplugin.so: undefined symbol: instance
P.S. Библиотека собиралась через механизм плагинов Qt. Однако проверял тоже самое штатными средствами ОС, ситуация та же.