Ошибка при связывании разделяемой библиотеки после компиляции объектов

0

Я скомпилировал объектные файлы, а затем попытался скомпилировать исполняемый файл, который не удалось, указав, что есть неопределенные ссылки на функции в "theLib".

g++ -I./theLib/src -c -o obj/main.o src/main.cpp

(работает до сих пор)

g++ -L./theLib -Wl,-rpath=./theLib obj/main.o -ltheLib -o exe

(ошибка: libtheLib.so: undefined reference to 'some_function')

Я проверял ответы везде, и все они просто предлагают переместить часть -ltheLib после зависимостей (что я и сделал). Но это все еще не работает. На самом деле я боюсь, что одна и та же библиотека компилируется просто для примера в другом каталоге.

Библиотека находится в C. Может ли это испортить попытку скомпилировать C++? Или я просто что-то пропустил с компиляцией файлов .o?

  • 0
    Используете ли вы extern "C" для функций из theLib которые вы используете в коде C ++?
  • 0
    Заголовки библиотеки действительно включают это, да.
Показать ещё 1 комментарий
Теги:
gcc
shared-libraries

1 ответ

1

Оказывается, библиотека зависела от функций, которые мне пришлось реализовать и предоставить в моем исходном коде. Я никогда не знал, что некоторые библиотеки это сделали, но урок узнал. Как только я реализовал функции, которые вызывают ошибки, и добавил эти исходные файлы, он сработал.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню