Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: helpman от Апрель 22, 2009, 17:21



Название: как подключить библиотеку к QT?
Отправлено: helpman от Апрель 22, 2009, 17:21
у меня имеется QT версии 3.3.3 , МСВС и библеотека mylib.a в которой есть фунция :
int mycity(int, int);

вопрос:
Как подключить библиотеку к QT?
Как я могу вызвать свою функцию из QT?
есть у кого примерчик или подскажите в какую сторону копать, что почитать можно...


Название: Re: как подключить библиотеку к QT?
Отправлено: SABROG от Апрель 22, 2009, 18:43
В .pro файле добавь:

Код:
INCLUDEPATH += путь_к_хедеру_mylib
LIBS += -Lпуть_к_библиотеке -lmylib

В .cpp файле:

Код:
#include <mylib.h>
...
mycity(1, 2); //вызываем функцию из mylib.a


Название: Re: как подключить библиотеку к QT?
Отправлено: helpman от Апрель 28, 2009, 13:41
в хедере надо написано это:
int mycity(int, int);

подключил как все написал, но компилятор выдает ошибкe на строчке вызова функции:
Undefined declaration

Как я понимаю библиотека не подхватилась...  т.к. если в коменты взять вызов функции то все ОК.

подскажите где я туплю...(


Название: Re: как подключить библиотеку к QT?
Отправлено: ритт от Апрель 28, 2009, 14:03
mylib.h нашёлся? гварды в хедере имеются? либа нашлась? чем собрана либа?


Название: Re: как подключить библиотеку к QT?
Отправлено: alekseysytchev от Май 07, 2009, 15:01
Ребята, только это решение подошло в моем случае, когда я искал, как подрубить -lqtiff.
Спасибо огромное. Только разве мне не надо было добавлять хедера.


Название: Re: как подключить библиотеку к QT?
Отправлено: ритт от Май 07, 2009, 20:48
> Только разве мне не надо было добавлять хедера.
если резолвишь символы вручную, не надо.


Название: Re: как подключить библиотеку к QT?
Отправлено: ритт от Май 07, 2009, 23:53
> Только разве мне не надо было добавлять хедера.
если резолвишь символы вручную, не надо.
жесть  :)
мм??


Название: Re: как подключить библиотеку к QT?
Отправлено: vasilii_ru от Июнь 02, 2011, 17:12
у меня Qt creator 2.0.1, основан на 4.7, WinXP, minGW
подключил 2 библиотеки P100X.lib, PortLib.lib
в файле .pro
        LIBS += P100X.lib
        LIBS += PortLib.lib

обе библиотеки он находит (проверено изменением имени), обе находятся в одном и томже каталоге программы
фунукции библиотеки P100X.lib находит , а функции библиотеки PortLib.lib не находит, пишет ошибку: undefined reference to 'имя функции'
особенности: библиотека P100X.lib содержит в себе запросы к библиотеки P100X.dll, а библиотека PortLib.lib полность статическая
библиотека PortLib.lib имеет свой хидер (.h) не совпадающий с именем библиотеки (пробовал вручную создавать совпадающее имя) - библ не мои
Вопрос: чтоже всетаки можно попробовать чтобы использовать функции из 2-ой библиотеки????   За любой ответ буду очень признателен


Название: Re: как подключить библиотеку к QT?
Отправлено: lit-uriy от Июнь 02, 2011, 18:48
>>а библиотека PortLib.lib полность статическая
тогда тебе не надо руками функции разрешать, используй заголовочник.


Название: Re: как подключить библиотеку к QT?
Отправлено: vasilii_ru от Июнь 03, 2011, 18:17
используй заголовочник.

я так понимаю это значит использовать хидер который шел вместе с этой библиотекой?

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


Название: Re: как подключить библиотеку к QT?
Отправлено: lit-uriy от Июнь 04, 2011, 09:44
покажи ошибки линкера. Возможно искажения имён не понятны данному конкретному компилятору.


Название: Re: как подключить библиотеку к QT?
Отправлено: vasilii_ru от Июнь 05, 2011, 16:49
 Вот выдаются такие ошибки :

debug/fuleren.o: In function `Fuleren':

C:\Qt\2010.05\progi\Fuleren-build-desktop/../Fuleren/fuleren.cpp:143: undefined reference to `InstallDriverWithSCManager()'

C:\Qt\2010.05\progi\Fuleren-build-desktop/../Fuleren/fuleren.cpp:143: undefined reference to `InstallDriverWithSCManager()'

collect2: ld returned 1 exit status

mingw32-make[1]: *** [debug\Fuleren.exe] Error 1

mingw32-make: *** [debug] Error 2

Процесс "C:/Qt/2010.05/mingw/bin/mingw32-make.exe" завершился с кодом %2.
Возникла ошибка при сборке проекта Fuleren (цель: Настольный компьютер)
Во время выполнения сборки на этапе "Сборка"

Библиотеку качал отсюда: http://www.pcports.ru/articles/4.php


Название: Re: как подключить библиотеку к QT?
Отправлено: Mikhail от Июнь 05, 2011, 18:55
Вы работаете с компилятором mingw.
А библиотека собрана Майкрософтовским компилятором.
И почему они должны понимать друг друга?


Название: Re: как подключить библиотеку к QT?
Отправлено: vasilii_ru от Июнь 05, 2011, 20:02
я не знаю должна ли она понимать или не должна (я для этого на форум и пришел чтобы выслушать мнения и советы, а тут приходят всякие наиумнейшие и пантуются что они такие аху... умные аж абосраться , которые собственно и могут что только поглумится)
библиотека P100X.lib  тоже собрана майкрософтовским компилятором но она компилится и линкуется !!!!(качал здеськачал здесь: http://ftp.icpdas.com.tw/pub/cd/iocard/pci...2/dll_ocx/demo/ " dll_vc6_070314.exe ")   
В чем фишка???


Название: Re: как подключить библиотеку к QT?
Отправлено: vasilii_ru от Июнь 06, 2011, 02:26
судя по вот этому http://forum.swamp.ru/viewtopic.php?p=1933292 сообщение от: Чт Фев 04, 2010 11:08 am
можно применить утилиту reimp.exe для преобразования
у меня в утилитах компилятора ее нет, скачал отдельно из архива mingw-utils-0.3.tar.gz но все равно ничего не выходит
в файле документации нашел такие строки:

If an input library contain regular objects (non-imports, i.e code and data) `reimp' will write out those objects unless you specify one of
the `--only-def' and `--dump-symbols' options. You probably want to include those objects as well in the generated library. `reimp'
doesn't do that automatically so you have to do it manually using `ar', like this
reimp imp.lib # this generates several .o or .obj files.
ar rcs libimp.a *.obj # add them to library

подставил свою библиотеку, после нее выходит файл с именем "0" чуть меньшего размера и файл .а в 2.5 раза меньше изначальной библиотеки, но он все равно не подходит!!!
есть утилита ranlib - но чем отличаются и как работает невыяснил, может кто подскажет чего?
или может этот файл .а я в неправильное место поставил (у меня он был тут С:Qt\2010.05\mingw\lib, в принципе в файл проекта я его тоже пробовал ложить)