Russian Qt Forum

Qt => Общие вопросы => Тема начата: G-virus от Июнь 17, 2010, 01:19



Название: Почему не подключается dll к проекту?(Qt Creator)
Отправлено: G-virus от Июнь 17, 2010, 01:19
Привет всем. Помогите пожалуйста, возникла такая проблема. Прочел на форуме, что dll подключается так
project.pro
Код
C++ (Qt)
LIBS += -lname // name.dll - та самая библа
 

Но почему-то при компиляции эта библа не обнаруживается. Хотя она лежит в папке с проектом. Что нужно сделать? :)


Название: Re: Почему не подключается dll к проекту?(Qt Creator)
Отправлено: BaltikS от Июнь 17, 2010, 05:54
Так линкуется LIB к  проекту, а DLL используется программой в процессе выполнения.


Название: Re: Почему не подключается dll к проекту?(Qt Creator)
Отправлено: G-virus от Июнь 17, 2010, 12:12
Так линкуется LIB к  проекту, а DLL используется программой в процессе выполнения.

А как мне дать знать программе, какую dll нужно использовать? в MS Visual Studio в референсах надо было указывать библу, а тут как?


Название: Re: Почему не подключается dll к проекту?(Qt Creator)
Отправлено: lit-uriy от Июнь 17, 2010, 12:45
>>надо было указывать библу
что за "библу"?


Название: Re: Почему не подключается dll к проекту?(Qt Creator)
Отправлено: G-virus от Июнь 17, 2010, 12:47
>>надо было указывать библу
что за "библу"?

agsXMPP.dll  :)


Название: Re: Почему не подключается dll к проекту?(Qt Creator)
Отправлено: lit-uriy от Июнь 17, 2010, 12:52
если нет файла с расширением .a, то нет смысла указывать библиотеку в pro-файле. Если есть то нужно указать:
LIBS += -lname # libname.a
LIBS += -Lpath/to/lib # тут путь к ней
ну и INCLUDEPATH не забудь указать


Название: Re: Почему не подключается dll к проекту?(Qt Creator)
Отправлено: G-virus от Июнь 17, 2010, 12:54
если нет файла с расширением .a, то нет смысла указывать библиотеку в pro-файле. Если есть то нужно указать:
LIBS += -lname # libname.a
LIBS += -Lpath/to/lib # тут путь к ней
ну и INCLUDEPATH не забудь указать

в том-то и дело, что есть только сама dll-ка и больше ничего  :)


Название: Re: Почему не подключается dll к проекту?(Qt Creator)
Отправлено: lit-uriy от Июнь 17, 2010, 12:56
если я правильно понимаю, то тогда нужно использовать QLibraryLoader


Название: Re: Почему не подключается dll к проекту?(Qt Creator)
Отправлено: G-virus от Июнь 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 и все равно никак


Название: Re: Почему не подключается dll к проекту?(Qt Creator)
Отправлено: BaltikS от Июнь 17, 2010, 14:05
1) возможно в пути не указано .DLL
2) можно попробовать QApplication::addLibraryPath


Название: Re: Почему не подключается dll к проекту?(Qt Creator)
Отправлено: G-virus от Июнь 17, 2010, 15:16
1) возможно в пути не указано .DLL
Указывал, все равно не подключает.

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

А какая принципиальная разница между этими способами? :)


Название: Re: Почему не подключается dll к проекту?(Qt Creator)
Отправлено: kuzulis от Июнь 17, 2010, 15:46
Цитировать
Указывал, все равно не подключает.

Значит библиотека кривая :)

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


Название: Re: Почему не подключается dll к проекту?(Qt Creator)
Отправлено: lit-uriy от Июнь 17, 2010, 16:00
QLibrary::errorString() что говорит?


Название: Re: Почему не подключается dll к проекту?(Qt Creator)
Отправлено: G-virus от Июнь 17, 2010, 18:21
Значит библиотека кривая :)

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

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

Вот:
http://dl.getdropbox.com/u/6052533/screen.jpg


Название: Re: Почему не подключается dll к проекту?(Qt Creator)
Отправлено: kuzulis от Июнь 17, 2010, 18:34
Цитировать
Судя по всему вы правы, потому что winmm.dll подключилась. Но дело в том, что agsXMPP.dll врядли кривая, т.к. в студии она подключалась

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


Название: Re: Почему не подключается dll к проекту?(Qt Creator)
Отправлено: G-virus от Июнь 17, 2010, 18:47
Цитировать
Судя по всему вы правы, потому что winmm.dll подключилась. Но дело в том, что agsXMPP.dll врядли кривая, т.к. в студии она подключалась

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

Ну в Qt Creator да, я mingw компилирую :)


Название: Re: Почему не подключается dll к проекту?(Qt Creator)
Отправлено: lit-uriy от Июнь 17, 2010, 18:52
>>Вот:
ну и для кого ты это вывалил?

запусти программу в консоли и перенаправь вывод ошибок в файл:
myprog 2>out.txt
открой в редакторе понимающем нужную кодировку и помести текст на форум.

П.С. дешифрацией с картинок по моему ни один форумчанин заниматься не станет


Название: Re: Почему не подключается dll к проекту?(Qt Creator)
Отправлено: Dendy от Июнь 17, 2010, 20:39
Ошибку или в файл или так:

Код
C++ (Qt)
qDebug() << qPrintable( lib.errorString() );


Название: Re: Почему не подключается dll к проекту?(Qt Creator)
Отправлено: G-virus от Июнь 17, 2010, 20:54
Эммм. Как бы, на картинке показано то, что выводит qDebug (lib.errorString().toAscii()) О_о


Название: Re: Почему не подключается dll к проекту?(Qt Creator)
Отправлено: BRE от Июнь 17, 2010, 20:56
Эммм. Как бы, на картинке показано то, что выводит qDebug (lib.errorString().toAscii()) О_о
Ты про ряд вопросиков?  ;)
Это очень не легко читается.


Название: Re: Почему не подключается dll к проекту?(Qt Creator)
Отправлено: G-virus от Июнь 17, 2010, 21:02
Эммм. Как бы, на картинке показано то, что выводит qDebug (lib.errorString().toAscii()) О_о
Ты про ряд вопросиков?  ;)
Это очень не легко читается.

записал в файл. У меня тоже вопросики, я хз, чем под виндой прочитать. Щас поколдую и выложу



Кстати как посоветовал Dendy, прога выдает ни чуть не лучший ответ  ;D


 ;D ;D ;D ;D ;D ;D ;D ;D ;D
Вот что выдало:
Cannot load library C:/Lab/Projects/Control/agsXMPP.dll: Не найден указанный модуль.



Название: Re: Почему не подключается dll к проекту?(Qt Creator)
Отправлено: G-virus от Июнь 18, 2010, 18:15
Ну что, все? Идеи кончились?  :)


Название: Re: Почему не подключается dll к проекту?(Qt Creator)
Отправлено: niXman от Июнь 18, 2010, 23:48
Цитировать
Задаешь вопрос на русском форуме - на 30 страницах объяснят, какой ты мудак.
после такого, и отвечать как-то не хочется :)

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


Название: Re: Почему не подключается dll к проекту?(Qt Creator)
Отправлено: G-virus от Июнь 19, 2010, 02:15
Ура, неадекваты проснулись. Ты не мог не написать подобного


Название: Re: Почему не подключается dll к проекту?(Qt Creator)
Отправлено: niXman от Июнь 19, 2010, 06:07
полагаю, в 23:48 они еще не ложились.


Название: Re: Почему не подключается dll к проекту?(Qt Creator)
Отправлено: G-virus от Июнь 19, 2010, 13:35
Пустой флуд и оффтоп что в принципе характерно для  тебя


Название: Re: Почему не подключается dll к проекту?(Qt Creator)
Отправлено: niXman от Июнь 19, 2010, 15:24
я просто прокомментировал вашу подпись. вы ожидали, что я раскрою сакральный смысл о том, почему не "подключается" длл-ка? ;)
у меня "подключилась" :P

Цитировать
Пустой флуд и оффтоп
дело в том, что я могу себе это позволить.

Цитировать
что в принципе характерно для  тебя
и, конечно -
"славлюсь тем, что мне на всех накакать" (с) niXman


Название: Re: Почему не подключается dll к проекту?(Qt Creator)
Отправлено: G-virus от Июнь 19, 2010, 15:46
Удивительно как ты еще здесь


Название: Re: Почему не подключается dll к проекту?(Qt Creator)
Отправлено: niXman от Июнь 19, 2010, 15:51
сей форум, для меня, не представляет никакого академического интереса... так, чисто постебаться.


Название: Re: Почему не подключается dll к проекту?(Qt Creator)
Отправлено: G-virus от Июнь 19, 2010, 15:55
сей форум, для меня, не представляет никакого академического интереса... так, чисто постебаться.

Ааа понятно, значит на тебя можно тупо положить и игнорить все фуфло, которое ты тут оставляешь


Название: Re: Почему не подключается dll к проекту?(Qt Creator)
Отправлено: niXman от Июнь 19, 2010, 16:01
именно! ;D

зы
вы недоспали походу..


Название: Re: Почему не подключается dll к проекту?(Qt Creator)
Отправлено: Igors от Июнь 19, 2010, 17:14
Cannot load library C:/Lab/Projects/Control/agsXMPP.dll: Не найден указанный модуль.
А он там есть? И правильный ли путь? Насколько я знаю в Вындоуз палки (слеши) должны быть в др. сторону и надо писать так:

"C:\\Lab\\Projects\\Control\\agsXMPP.dll"


Название: Re: Почему не подключается dll к проекту?(Qt Creator)
Отправлено: G-virus от Июнь 19, 2010, 18:26
Cannot load library C:/Lab/Projects/Control/agsXMPP.dll: Не найден указанный модуль.
А он там есть? И правильный ли путь? Насколько я знаю в Вындоуз палки (слеши) должны быть в др. сторону и надо писать так:

"C:\\Lab\\Projects\\Control\\agsXMPP.dll"

Да, файл там есть. И путь правильный. Пробовал и со слешами и с двойными бэкслешами и все равно он не находит именно эту. (хотя я пробовал только на двух библах (agsXMPP.dll и winmm.dll), потому что работать с dll в Qt Creator до сих пор не приходилось) :)


Название: Re: Почему не подключается dll к проекту?(Qt Creator)
Отправлено: Igors от Июнь 20, 2010, 03:44
Да, файл там есть. И путь правильный. Пробовал и со слешами и с двойными бэкслешами и все равно он не находит именно эту. (хотя я пробовал только на двух библах (agsXMPP.dll и winmm.dll), потому что работать с dll в Qt Creator до сих пор не приходилось) :)
Создать простенький проект на MSVC и сделать там LoadLibrary. Потом думать - в зависимости от того пойдет или нет



Название: Re: Почему не подключается dll к проекту?(Qt Creator)
Отправлено: BRE от Июнь 20, 2010, 09:21
в том-то и дело, что есть только сама dll-ка и больше ничего  :)
Такой вопрос, а откуда эта dll взялась?
Может она вообще 64-битная?


Название: Re: Почему не подключается dll к проекту?(Qt Creator)
Отправлено: G-virus от Июнь 20, 2010, 12:47
в том-то и дело, что есть только сама dll-ка и больше ничего  :)
Такой вопрос, а откуда эта dll взялась?
Может она вообще 64-битная?

 вот отсюда (http://www.codeproject.com/KB/IP/JabberClient.aspx) взял

Создать простенький проект на MSVC и сделать там LoadLibrary. Потом думать - в зависимости от того пойдет или нет

У меня уже ее нету. Юзаю только Криэйтор. Но в студии она подключалась в референсах :)


Название: Re: Почему не подключается dll к проекту?(Qt Creator)
Отправлено: G-virus от Июнь 23, 2010, 14:37
Ну что, будут еще идеи или как?  :)


Название: Re: Почему не подключается dll к проекту?(Qt Creator)
Отправлено: Igors от Июнь 23, 2010, 15:30
Ну что, будут еще идеи или как?  :)
Вас трудно понять  :)  Давеча Вы писали

У меня уже ее нету.
Я так понял - проблема решена (или обойдена)?

Юзаю только Криэйтор. Но в студии она подключалась в референсах :)
На каких референсах? Создайте новый проект на MSVC и сделайте там LoadLibrary, т.е. убедитесь что dll не калечная, не 64, что она использованию подлежит. Это займет 10-15 минут, гораздо меньше чем опрос идей на форуме  :)


Название: Re: Почему не подключается dll к проекту?(Qt Creator)
Отправлено: G-virus от Июнь 24, 2010, 00:52
я писал, что у меня MSVC нету  ;D ;D ;D ;D ;D


Название: Re: Почему не подключается dll к проекту?(Qt Creator)
Отправлено: Igors от Июнь 24, 2010, 11:52
я писал, что у меня MSVC нету  ;D ;D ;D ;D ;D
Значит просто верьте криатору что dll битая/несовместимая и ищите другую


Название: Re: Почему не подключается dll к проекту?(Qt Creator)
Отправлено: G-virus от Июнь 24, 2010, 22:49
я писал, что у меня MSVC нету  ;D ;D ;D ;D ;D
Значит просто верьте криатору что dll битая/несовместимая и ищите другую

 Дело в том, что у кореша стоит Win 7 x86, и у него она грузится. Правда в MS Visual Studio 2010 но факт, что она 32-битная.
И все прекрасно работает. Да и я запускал ее через rundll32.exe тоже вроде ошибок не было. Не знаю даже, что не так :(


Название: Re: Почему не подключается dll к проекту?(Qt Creator)
Отправлено: Igors от Июнь 24, 2010, 23:42
Дело в том, что у кореша стоит Win 7 x86, и у него она грузится. Правда в MS Visual Studio 2010 но факт, что она 32-битная.
И все прекрасно работает. Да и я запускал ее через rundll32.exe тоже вроде ошибок не было. Не знаю даже, что не так :(
MSVC требует набора своих run-time библиотек - попробуйте их установить (как у кореша), с этим у MS хорошо, скачиваете и ставите. Возможно криатор не говорит какая именно dll не найдена - это конечно свинство, но в OC Вындоуз все возможно


Название: Re: Почему не подключается dll к проекту?(Qt Creator)
Отправлено: G-virus от Июнь 25, 2010, 12:26
Дело в том, что у кореша стоит Win 7 x86, и у него она грузится. Правда в MS Visual Studio 2010 но факт, что она 32-битная.
И все прекрасно работает. Да и я запускал ее через rundll32.exe тоже вроде ошибок не было. Не знаю даже, что не так :(
MSVC требует набора своих run-time библиотек - попробуйте их установить (как у кореша), с этим у MS хорошо, скачиваете и ставите. Возможно криатор не говорит какая именно dll не найдена - это конечно свинство, но в OC Вындоуз все возможно

Ок попробую. qDebug вывел же вот это Cannot load library C:/Lab/Projects/Control/agsXMPP.dll: Не найден указанный модуль.


Название: Re: Почему не подключается dll к проекту?(Qt Creator)
Отправлено: G-virus от Июнь 27, 2010, 21:39
Как это не смешно, но проблема таилась в отсутствии .NET Framework у меня на компе  ;D
Та DLL написана на C# и походу тянет что-то из пакета Framework. По-крайней мере, после его установки, библа подключается :)

и тут же выбросил библу  ;D (не умею юзать шарповые библы в С++)


Название: Re: Почему не подключается dll к проекту?(Qt Creator)
Отправлено: MJIbIu от Июль 06, 2010, 14:59
Как это не смешно, но проблема таилась в отсутствии .NET Framework у меня на компе  ;D
Та DLL написана на C# и походу тянет что-то из пакета Framework. По-крайней мере, после его установки, библа подключается :)

и тут же выбросил библу  ;D (не умею юзать шарповые библы в С++)
Приведи пару примеров как ты работал с этой dll в Qt Creator
а то у меня ничего дальше подключение dll не выходил  :(


Название: Re: Почему не подключается dll к проекту?(Qt Creator)
Отправлено: fantom от Январь 04, 2012, 00:47
Пробую подключть тестовую dll.
В папке с исходниками создаю две папки с содержимым:
include/MyLibrary/mylibrary.h
lib/libMyLibrary.a

В проекте дополнительно прописываю:

INCLUDEPATH += include/MyLibrary
LIBS += -Llib -lMyLibrary

Выдает ошибку:
:-1: ошибка: cannot find -lMyLibrary


Что я делаю не так???
//*************************
Сделал так:
INCLUDEPATH += mylibrary
LIBS += -LMyLibrary

Все файлы находятся вместе с исходниками.
При компиляции выдает ошибку:
ошибка: undefined reference to `_imp___Z3sumii'

При создании dll - ки написал там функцию
int sum(int x, int y)
{
    return x + y;
}

Я так понимаю проблема в самой dll?


Название: Re: Почему не подключается dll к проекту?(Qt Creator)
Отправлено: Blackwanderer от Январь 04, 2012, 05:38
Пробую подключть тестовую dll.
В папке с исходниками создаю две папки с содержимым:
include/MyLibrary/mylibrary.h
lib/libMyLibrary.a

В проекте дополнительно прописываю:

INCLUDEPATH += include/MyLibrary
LIBS += -Llib -lMyLibrary
В QtCreatore есть встроенное средство для подключения библиотек: Правой кнопкой на проект и выбрать "Add Library..."