Использование статической библиотеки в Qt Creator - PullRequest
35 голосов
/ 01 сентября 2009

У меня чертовски много времени на поиск документации, которая четко объясняет, как использовать статическую библиотеку в Qt Creator.

Я создал и скомпилировал мою статическую библиотеку, используя Qt Creator (New => Projects \ C ++ Library => Установите тип "Статически связанная библиотека"). Компилирует и выдает ".a файл".

Проблема, с которой я сталкиваюсь, это когда я пытаюсь использовать библиотеку. У меня есть другой проект, который хотел бы использовать его (#include файлы в библиотеке и т. Д.), Но я не знаю, как правильно связываться с библиотекой или включать файлы из библиотеки.

Ответы [ 5 ]

35 голосов
/ 01 сентября 2009
LIBS += -L[path to lib] -l[name of lib]

Внимание! это имя файла lib: lib [nameOfLib] .a и вам нужно передать только оригинальную часть -l [nameOfLib]

17 голосов
/ 01 сентября 2009

В вашем проекте, использующем библиотеку, укажите переменную LIBS , указывающую путь вашей библиотеки.
Чтобы включить файлы из библиотеки, добавьте папку библиотеки в INCLUDEPATH , а затем выполните обычный #include в файлах кода.

например:

# the binary's .pro  
LIBS += c:/mylibs/math.lib
INCLUDEPATH += c:/mylibs

Отредактировано:
-L сообщает qmake, что путь - это каталог, в котором можно искать библиотеки -l говорит, что путь - это файл, но обратите внимание на следующее наблюдение.

Из документации qmake:

Эта переменная содержит список библиотеки, которые будут связаны в проект. Вы можете использовать Unix -l (библиотека) и -L (путь к библиотеке) флаги и qmake сделает правильную вещь с этими библиотеками на Windows (а именно это означает прохождение полного путь библиотеки к компоновщику). Единственным ограничением к этому является библиотека должна существовать, чтобы qmake нашел в каком каталоге находится -l lib.

Примечание: в Windows указание библиотек с опцией -l, как указано выше Например, вызовет библиотеку с самый большой номер версии для использования; например, libmath2.lib может потенциально может быть использован вместо libmathlib. Чтобы избежать этой двусмысленности, мы рекомендуем вам явно указать библиотеку для использования включая суффикс имени файла .lib.

15 голосов
/ 12 августа 2011

.. от создателя проекта QT

  1. перейти к projectName.pro из меню слева
  2. тип LIBS + =
  3. rightClick AddLibrary
10 голосов
/ 14 мая 2015

вариант

 LIBS += -L[PATH_TO_LIB_DIR] -l[LIBNAME] 

не работает, если у вас есть и статические libLIBNAME.a, и динамические libLIBNAME.so библиотеки в одной папке PATH_TO_LIB_DIR.
В этом случае на моем Linux с QMake v 3.0 динамический связан по умолчанию.
Чтобы принудительно связать со статическим единицу, вам нужно указать это явно без каких-либо опций.

LIBS += PATH_TO_LIB_DIR/libLIBNAME.a
2 голосов
/ 14 марта 2012

Это

LIBS += -L"/some path" -l"somename.a"

или

LIBS += -L/somepath -lsomename.a

или

LIBS += -L/somepath -lsomename"

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

...