Russian Qt Forum

Qt => Общие вопросы => Тема начата: labview от Август 02, 2010, 21:43



Название: Использование внешних библиотек
Отправлено: labview от Август 02, 2010, 21:43
Всем привет!

Столкнулся с очередной проблемкой. Скачал интерессующую меня библиотеку (под названием QExtSerialPort) из интернета. Вложены были файлы .h и .cpp, а так же файл .pro.
Почитав в интернете, что сначала нужно скомпилировать .pro с помощью qmake, а потом получив make скомпилировать либо .dll, либо .a.

Всё сделал, теперь у меня имеется и .dll и .a. Отлично, что теперь делать дальше? Как мне подцепить библиотеку в проект?

Открываю например один из приложеных примеров и пытаюсь скомпилировать, но компайлер ругается, что ему нехватает -lqextserialportd:

"cannot find -lqextserialportd"

Пожалуйста обьясните новичку что и как с внешними библиотеками. Спасибо.

С уважением, labview.


Название: Re: Использование внешних библиотек
Отправлено: SABROG от Август 02, 2010, 22:09
В .pro файле для компилятора gcc должно быть примерно такое:

Код:
*-g++*{
LIBRARY_PATH = path/to/library
LIBRARY_NAME = mylibraryname #.a file
INCLUDEPATH += .;$$LIBRARY_PATH/include
LIBS += -L $$LIBRARY_PATH/lib -l$$LIBRARY_NAME
CONFIG(debug): LIBS = $$join(LIBS,,,d) #debug version
}

Для остальных компиляторов в зависимости от параметров командной строки.


Название: Re: Использование внешних библиотек
Отправлено: labview от Август 02, 2010, 22:58
Спасибо!

Разрешите выложить настройки проекта:

Код:
######################################################################
# QextSerialPort Test Application (QESPTA)
######################################################################


PROJECT = QESPTA
TEMPLATE = app
DEPENDPATH += .
INCLUDEPATH += ../..
QMAKE_LIBDIR += ../../build


OBJECTS_DIR    = obj
MOC_DIR        = moc
UI_DIR         = uic
CONFIG      += qt thread warn_on


HEADERS += MainWindow.h \
MessageWindow.h \
QespTest.h

SOURCES += main.cpp \
MainWindow.cpp \
MessageWindow.cpp \
QespTest.cpp

CONFIG(debug, debug|release):LIBS  += -lqextserialportd
else:LIBS  += -lqextserialport

unix:DEFINES   = _TTY_POSIX_
win32:DEFINES  = _TTY_WIN_

OTHER_FILES +=

Насколько я понимаю
QMAKE_LIBDIR += ../../build
показывает на папку с библиотекой, я проверил, так и есть, там находятся и .dll и .a

CONFIG(debug, debug|release):LIBS  += -lqextserialportd
else:LIBS  += -lqextserialport
говорит о том, что нужно брать файл для дибага, если в настройках выбран пункт debug. Всё верно.

Да, компайлер g++, ос Windows.


P.S. вопрос снимается. После того как я стёр всю папку с библиотекой и перелинковал всё заново, всё заработало как и должно было. Видимо я где то что то в первый раз напутал.