Russian Qt Forum
Ноябрь 24, 2024, 06:44 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: как подключить библиотеку к QT?  (Прочитано 37277 раз)
helpman
Гость
« : Апрель 22, 2009, 17:21 »

у меня имеется QT версии 3.3.3 , МСВС и библеотека mylib.a в которой есть фунция :
int mycity(int, int);

вопрос:
Как подключить библиотеку к QT?
Как я могу вызвать свою функцию из QT?
есть у кого примерчик или подскажите в какую сторону копать, что почитать можно...
Записан
SABROG
Гость
« Ответ #1 : Апрель 22, 2009, 18:43 »

В .pro файле добавь:

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

В .cpp файле:

Код:
#include <mylib.h>
...
mycity(1, 2); //вызываем функцию из mylib.a
Записан
helpman
Гость
« Ответ #2 : Апрель 28, 2009, 13:41 »

в хедере надо написано это:
int mycity(int, int);

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

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

подскажите где я туплю...(
« Последнее редактирование: Апрель 28, 2009, 13:56 от helpman » Записан
ритт
Гость
« Ответ #3 : Апрель 28, 2009, 14:03 »

mylib.h нашёлся? гварды в хедере имеются? либа нашлась? чем собрана либа?
Записан
alekseysytchev
Гость
« Ответ #4 : Май 07, 2009, 15:01 »

Ребята, только это решение подошло в моем случае, когда я искал, как подрубить -lqtiff.
Спасибо огромное. Только разве мне не надо было добавлять хедера.
Записан
ритт
Гость
« Ответ #5 : Май 07, 2009, 20:48 »

> Только разве мне не надо было добавлять хедера.
если резолвишь символы вручную, не надо.
Записан
ритт
Гость
« Ответ #6 : Май 07, 2009, 23:53 »

> Только разве мне не надо было добавлять хедера.
если резолвишь символы вручную, не надо.
жесть  Улыбающийся
мм??
Записан
vasilii_ru
Гость
« Ответ #7 : Июнь 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-ой библиотеки?Непонимающий   За любой ответ буду очень признателен
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #8 : Июнь 02, 2011, 18:48 »

>>а библиотека PortLib.lib полность статическая
тогда тебе не надо руками функции разрешать, используй заголовочник.
Записан

Юра.
vasilii_ru
Гость
« Ответ #9 : Июнь 03, 2011, 18:17 »

используй заголовочник.

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

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

Сообщений: 3880


Просмотр профиля WWW
« Ответ #10 : Июнь 04, 2011, 09:44 »

покажи ошибки линкера. Возможно искажения имён не понятны данному конкретному компилятору.
Записан

Юра.
vasilii_ru
Гость
« Ответ #11 : Июнь 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
Записан
Mikhail
Программист
*****
Offline Offline

Сообщений: 587


Просмотр профиля
« Ответ #12 : Июнь 05, 2011, 18:55 »

Вы работаете с компилятором mingw.
А библиотека собрана Майкрософтовским компилятором.
И почему они должны понимать друг друга?
Записан
vasilii_ru
Гость
« Ответ #13 : Июнь 05, 2011, 20:02 »

я не знаю должна ли она понимать или не должна (я для этого на форум и пришел чтобы выслушать мнения и советы, а тут приходят всякие наиумнейшие и пантуются что они такие аху... умные аж абосраться , которые собственно и могут что только поглумится)
библиотека P100X.lib  тоже собрана майкрософтовским компилятором но она компилится и линкуется !!!!(качал здеськачал здесь: http://ftp.icpdas.com.tw/pub/cd/iocard/pci...2/dll_ocx/demo/ " dll_vc6_070314.exe ")   
В чем фишка???
Записан
vasilii_ru
Гость
« Ответ #14 : Июнь 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, в принципе в файл проекта я его тоже пробовал ложить)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.126 секунд. Запросов: 22.