Вызовы из общего объекта в основное приложение прерываются, если я строю с помощью QtCreator - PullRequest
0 голосов
/ 28 июня 2019

Спецификация системы: Ubuntu 16.04, QtCreator 3.5.1 на основе Qt5.5.1

В проекте на C я использую dlopen и друзей для загрузки общей библиотеки.Библиотека использует некоторые механизмы из основного приложения.Теперь, если я скомпилирую вручную из терминала, все работает просто отлично.Когда я использую QtCreator для сборки проекта, вызовы из библиотеки в основное приложение завершаются со следующей ошибкой: / Программирование / C / emme_1 / emme_1: ошибка поиска символа: / Программирование / C / emme_1 / modtest / test.итак: неопределенный символ: pop .Здесь pop - это функция в главном приложении, которая называется emme_1.Обратите внимание, что ошибка возникает, только если функция библиотеки вызывает другую функцию внутри основного приложения.Если функция библиотеки пуста и вызывается из приложения, она работает.

Это мой очень простой .pro-файл:

QMAKE_CFLAGS += -DTRACE_ASM
QMAKE_CFLAGS += -rdynamic
QMAKE_CFLAGS += -ldl
LIBS +=  /usr/lib/x86_64-linux-gnu/libdl.so

Я считаю, что он содержит все необходимое для требуемой функциональности, но, возможно, я что-то упустил.

1 Ответ

0 голосов
/ 30 июня 2019

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

Вы должны что-то упустить, так как установка нене работает.

Обратите внимание, что -rdynamic и -ldl являются флагами компоновщика, а не флагами компиляции.Вы захотите переместить их в QMAKE_LFLAGS.

. Вы можете посмотреть на команду окончательной ссылки и убедиться, что -rdynamic это , а не .Как только вам это удастся, все снова будет работать.

...