У меня есть общая библиотека, которая связана с другой (сторонней) разделяемой библиотекой. Моя разделяемая библиотека затем загружается с использованием dlopen в моем приложении. Все это прекрасно работает (если файлы находятся на правильном пути и т.д.).
Теперь проблема заключается в том, что мне даже не нужно указывать ссылку на стороннюю разделяемую библиотеку при связывании моей библиотеки. GCC принимает его без сообщений об ошибках undefined. Итак, вопрос; как я могу заставить GCC уведомить меня о undefined ссылках?
Если я изменю свою библиотеку на (временно) исполняемый файл, я получаю ссылки undefined (когда не поставляю библиотеку компоновщику). (Отлично работает, если я укажу его.)
I.e., выполняется следующее:
g++ -fPIC -shared -o libb.so b.o
g++ -fPIC -shared -o liba.so a.o
g++ -o a.exe a.cpp
Если вторая строка НЕ выдаёт ошибку, а третья строка жалуется на ссылку undefined.
Пример кода:
хиджры:
class a
{
public:
void foobar();
};
a.cpp:
#include "a.h"
#include "b.h"
void a::foobar()
{
b myB;
myB.foobar();
}
int main()
{
a myA; myA.foobar();
}
b.h:
class b
{
public:
void foobar();
};
b.cpp:
#include "b.h"
void b::foobar()
{
}