Russian Qt Forum
Июнь 11, 2024, 04:02 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1] 2 3 4   Вниз
  Печать  
Автор Тема: Почему не подключается dll к проекту?(Qt Creator)  (Прочитано 39402 раз)
G-virus
Гость
« : Июнь 17, 2010, 01:19 »

Привет всем. Помогите пожалуйста, возникла такая проблема. Прочел на форуме, что dll подключается так
project.pro
Код
C++ (Qt)
LIBS += -lname // name.dll - та самая библа
 

Но почему-то при компиляции эта библа не обнаруживается. Хотя она лежит в папке с проектом. Что нужно сделать? Улыбающийся
Записан
BaltikS
Гость
« Ответ #1 : Июнь 17, 2010, 05:54 »

Так линкуется LIB к  проекту, а DLL используется программой в процессе выполнения.
Записан
G-virus
Гость
« Ответ #2 : Июнь 17, 2010, 12:12 »

Так линкуется LIB к  проекту, а DLL используется программой в процессе выполнения.

А как мне дать знать программе, какую dll нужно использовать? в MS Visual Studio в референсах надо было указывать библу, а тут как?
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #3 : Июнь 17, 2010, 12:45 »

>>надо было указывать библу
что за "библу"?
Записан

Юра.
G-virus
Гость
« Ответ #4 : Июнь 17, 2010, 12:47 »

>>надо было указывать библу
что за "библу"?

agsXMPP.dll  Улыбающийся
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #5 : Июнь 17, 2010, 12:52 »

если нет файла с расширением .a, то нет смысла указывать библиотеку в pro-файле. Если есть то нужно указать:
LIBS += -lname # libname.a
LIBS += -Lpath/to/lib # тут путь к ней
ну и INCLUDEPATH не забудь указать
Записан

Юра.
G-virus
Гость
« Ответ #6 : Июнь 17, 2010, 12:54 »

если нет файла с расширением .a, то нет смысла указывать библиотеку в pro-файле. Если есть то нужно указать:
LIBS += -lname # libname.a
LIBS += -Lpath/to/lib # тут путь к ней
ну и INCLUDEPATH не забудь указать

в том-то и дело, что есть только сама dll-ка и больше ничего  Улыбающийся
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #7 : Июнь 17, 2010, 12:56 »

если я правильно понимаю, то тогда нужно использовать QLibraryLoader
Записан

Юра.
G-virus
Гость
« Ответ #8 : Июнь 17, 2010, 13:15 »

если я правильно понимаю, то тогда нужно использовать QLibraryLoader
Сделал так:
Код
C++ (Qt)
   QLibrary lib("C:/Lab/Projects/Control/agsXMPP");
   if(lib.load())
       cout << "\n Library is loaded \n";
   else
       cerr << "\n Library is not loaded \n";
 

Всегда вылетает "Library is not loaded"  Непонимающий Пробол и полное имя указывать, и agsXMPP и agsXMPP.dll и все равно никак
Записан
BaltikS
Гость
« Ответ #9 : Июнь 17, 2010, 14:05 »

1) возможно в пути не указано .DLL
2) можно попробовать QApplication::addLibraryPath
Записан
G-virus
Гость
« Ответ #10 : Июнь 17, 2010, 15:16 »

1) возможно в пути не указано .DLL
Указывал, все равно не подключает.

2) можно попробовать QApplication::addLibraryPath

А какая принципиальная разница между этими способами? Улыбающийся
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #11 : Июнь 17, 2010, 15:46 »

Цитировать
Указывал, все равно не подключает.

Значит библиотека кривая Улыбающийся

Попробуйте создать какой нибудь тестовый пример и подключить какую нибудь реально рабочую DLL-ку типа из "c:\WINDOWS\system32\*.dll"
Записан

ArchLinux x86_64 / Win10 64 bit
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #12 : Июнь 17, 2010, 16:00 »

QLibrary::errorString() что говорит?
Записан

Юра.
G-virus
Гость
« Ответ #13 : Июнь 17, 2010, 18:21 »

Значит библиотека кривая Улыбающийся

Судя по всему вы правы, потому что winmm.dll подключилась. Но дело в том, что agsXMPP.dll врядли кривая, т.к. в студии она подключалась Улыбающийся

QLibrary::errorString() что говорит?

Вот:
http://dl.getdropbox.com/u/6052533/screen.jpg
« Последнее редактирование: Июнь 17, 2010, 18:24 от G-virus » Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #14 : Июнь 17, 2010, 18:34 »

Цитировать
Судя по всему вы правы, потому что winmm.dll подключилась. Но дело в том, что agsXMPP.dll врядли кривая, т.к. в студии она подключалась

А проект компилите MinGW или VS компилятором? Если MinGW - то может не подключаться.. Вроде.
Записан

ArchLinux x86_64 / Win10 64 bit
Страниц: [1] 2 3 4   Вверх
  Печать  
 
Перейти в:  


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