Ошибка при компиляции библиотеки QXmpp на Qt 5.4

С этого утра я пытаюсь скомпилировать библиотеку XMPP для QT calles qxmpp.

Я пытаюсь использовать Qt Creator и делать Build All, но компилятор не может найти вещь с именем -lqxmpp0, и я не знаю, что это такое. К сожалению, Google не помог.

Мое окно Qt:

библиотека github

Заранее благодарны за Вашу помощь.

2 ответа

Пожалуйста, проверьте, есть ли в qxmpp.pri что-то вроде этого:

QXMPP_INCLUDEPATH = $$PWD/src/base $$PWD/src/client $$PWD/src/server

# Determine library name
CONFIG(debug, debug|release) {
    QXMPP_LIBRARY_NAME = qxmpp_d
} else {
    QXMPP_LIBRARY_NAME = qxmpp
}

# Determine library type (shared or staticlib)
isEmpty(QXMPP_LIBRARY_TYPE) {
    android | ios {
        QXMPP_LIBRARY_TYPE = staticlib
    } else {
        QXMPP_LIBRARY_TYPE = shared
    }
}

если вы видите, QXMPP_LIBRARY_NAME определяет имя библиотеки, также проверьте, включен ли в examples.pro файл qxmpp.pri. Я надеюсь, что мой ответ может помочь.

-library -l библиотека

Поиск библиотеки по имени библиотеки при связывании. (Второй вариант с библиотекой в ​​качестве отдельного аргумента предназначен только для соответствия POSIX и не рекомендуется.)

Имеет значение, где в команде вы пишете эту опцию; компоновщик ищет и обрабатывает библиотеки и объектные файлы в указанном порядке. Таким образом, 'foo.o -lz bar.o' ищет библиотеку 'z' после файла foo.o, но перед bar.o. Если bar.o ссылается на функции в "z", эти функции могут быть не загружены.

Компоновщик ищет стандартный список каталогов для библиотеки, который на самом деле является файлом с именем liblibrary.a. Затем компоновщик использует этот файл, как если бы он был указан точно по имени.

В число найденных каталогов входят несколько стандартных системных каталогов, а также любые, которые вы указываете с помощью -L.

Обычно файлы, найденные таким образом, являются библиотечными файлами - архивными файлами, членами которых являются объектные файлы. Компоновщик обрабатывает архивный файл, просматривая его на наличие элементов, которые определяют символы, на которые до сих пор ссылались, но не определяли. Но если найденный файл является обычным объектным файлом, он связывается обычным способом. Единственная разница между использованием параметра -l и указанием имени файла заключается в том, что -l окружает библиотеку 'lib' и '.a' и ищет несколько каталогов.


https://gcc.gnu.org/onlinedocs/gcc/Link-Options.html

Другие вопросы по тегам