Название: Доступ к DLL из QT Отправлено: pau от Декабрь 07, 2008, 12:24 Добрый день, коллеги.
Прошу прощения за вопрос - скорее всего более чем банальный. Есть класс в dll, написанный под win32. Код: // mylib.dll, mylib.h Как мне использовать этот класс в приложении QT? Если можно, покажите пожалуйста пример кода и расскажите про настройку компилятора. Заранее большое спасибо. Название: Re: Доступ к DLL из QT Отправлено: ритт от Декабрь 07, 2008, 15:31 1.
Цитировать class MyClass замени на:Цитировать #ifdef Q_OS_WIN и компиляй либу с -DMYLIB_BUILD# ifdef MYLIB_BUILD # define MYLIB_EXPORT __declspec(dllexport) # else # define MYLIB_EXPORT __declspec(dllimport) # endif #endif #ifndef MYLIB_EXPORT # define MYLIB_EXPORT #endif class MYLIB_EXPORT MyClass 2. в .pro (или .pri)-файл проекта добавь: Цитировать HEADERS += mylib.h LIBS += -lmylib 3. в сорцах перед использованием напиши: Цитировать #include "mylib.h" Название: Re: Доступ к DLL из QT Отправлено: pau от Декабрь 07, 2008, 20:14 спасибо. попробую
Название: Re: Доступ к DLL из QT Отправлено: BaltikS от Декабрь 07, 2008, 20:43 не, Константин написал как создать DLL...
А для её использования использовать надо QLibrary.... в асситенте пример вызова есть. Название: Re: Доступ к DLL из QT Отправлено: spirit от Декабрь 07, 2008, 20:48 не, Константин написал как создать DLL... А для её использования использовать надо QLibrary.... в асситенте пример вызова есть. вот и использование Цитировать 2. в .pro (или .pri)-файл проекта добавь: Quote HEADERS += mylib.h LIBS += -lmylib 3. в сорцах перед использованием напиши: Quote #include "mylib.h" Название: Re: Доступ к DLL из QT Отправлено: BaltikS от Декабрь 07, 2008, 20:52 А, не прочёл до конца, там же класс, а не функция... Всё верно...при условии что имеется lib-файл.
Название: Re: Доступ к DLL из QT Отправлено: pau от Декабрь 08, 2008, 09:02 1. т.е. правильно ли я понимаю - если определено Q_OS_WIN то Qt понимает __declspec(dllexport/dllimport) ?Цитировать class MyClass замени на:Цитировать #ifdef Q_OS_WIN # ifdef MYLIB_BUILD # define MYLIB_EXPORT __declspec(dllexport) # else # define MYLIB_EXPORT __declspec(dllimport) # endif #endif #ifndef MYLIB_EXPORT # define MYLIB_EXPORT #endif class MYLIB_EXPORT MyClass а можно ли загрузить dll используя что-то типа LoadLibrary и как в этом случае прописать функции? опять заранее большое спасибо. Название: Re: Доступ к DLL из QT Отправлено: spirit от Декабрь 08, 2008, 09:05 вот человек предложил использовать QLibrary (http://doc.trolltech.com/4.4/qlibrary.html)
не, Константин написал как создать DLL... А для её использования использовать надо QLibrary.... в асситенте пример вызова есть. Название: Re: Доступ к DLL из QT Отправлено: ритт от Декабрь 08, 2008, 09:35 ой, мой недочёт - вместо #ifdef Q_OS_WIN нужно писать что-то вроде #ifdef _WIN, т.к. Q_OS_WIN - кутэшный дефайн...
кутэ не понимает __declspec(dllexport/dllimport) - его понимает компилятор Название: Re: Доступ к DLL из QT Отправлено: pau от Декабрь 08, 2008, 11:47 ой, мой недочёт - вместо #ifdef Q_OS_WIN нужно писать что-то вроде #ifdef _WIN, т.к. Q_OS_WIN - кутэшный дефайн... кутэ не понимает __declspec(dllexport/dllimport) - его понимает компилятор а-а-а ... вот теперь понятно. конечно компилятор - я имел ввиду не Microsoft компилятор :) |