Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Simpleton от Май 26, 2014, 00:16



Название: QScintilla
Отправлено: Simpleton от Май 26, 2014, 00:16
Доброй ночи!
Помогите разобраться, пожалуйста.
Не получается собрать библиотеку :(

В конечном итоге, вышло собрать через Visual Studio - получил lib и dll файлы.
Получается запустить проект с примером QScintilla только в конфигурации release ( соответственно библиотека тоже была собрана в release), в debug (с учетом того, что и библиотека была собрана в debug) программа валится с ошибкой - "QWidget: Must construct a QApplication before a QPaintDevise".

Хотелось бы использовать библиотеку в Qt Creator (компилятор - MinGW), но тут вообще ее собрать не получается (точнее на выходе получается только dll файл, lib попросту отсутствует), а готовая сборка от visual studio (файлы lib и dll) естественно не подходит.

Если у кого есть какие идеи, спасибо!


Название: Re: QScintilla
Отправлено: Old от Май 26, 2014, 04:47
(точнее на выходе получается только dll файл, lib попросту отсутствует)
Конечно отсутствует, просто у mingw расширение не ".lib", а ".a". :)
Поэтому, не переживайте, библиотека собирается.


Название: Re: QScintilla
Отправлено: Simpleton от Май 26, 2014, 08:14
Ах вот оно что :)
Благодарю)

А как тогда подключить библиотеку с получившимися libqscintilla2.a и qscintilla2.dll?


Название: Re: QScintilla
Отправлено: Old от Май 26, 2014, 08:23
А как тогда подключить библиотеку с получившимися libqscintilla2.a и qscintilla2.dll?
Как всегда, в pro-файле проекта добавить:
LIBS += -lqscintilla2



Название: Re: QScintilla
Отправлено: Simpleton от Май 26, 2014, 08:37
"ошибка: cannot find -lqscintilla2"
:(

файлы естественно подключил


Название: Re: QScintilla
Отправлено: Old от Май 26, 2014, 08:40
"ошибка: cannot find -lqscintilla2"
:(
Добавьте:
LIBS += -L<path/to/lib> -lqscintilla2



Название: Re: QScintilla
Отправлено: Simpleton от Май 26, 2014, 08:53
Спасибо большое!
Помогло :)

Только теперь такая же история, при попытке использования библиотеки (в конфигурации debug) ошибка - "QWidget: Must construct a QApplication before a QWidget".
Однако при конфигурации release - все отлично :)



Название: Re: QScintilla
Отправлено: Old от Май 26, 2014, 08:57
Только теперь такая же история, при попытке использования библиотеки (в конфигурации debug) ошибка - "QWidget: Must construct a QApplication before a QWidget".
Однако при конфигурации release - все отлично :)
Это, скорее всего, происходит из-за того, что вы начинаете создавать элементы GUI до создания объекта QApplication.
Вначале нужно создать этот объект.


Название: Re: QScintilla
Отправлено: Simpleton от Май 26, 2014, 09:04
Это получается такая особенность этой библиотеки?
А как мне тогда быть, если я хочу воспользоваться ею статически :(


Название: Re: QScintilla
Отправлено: Old от Май 26, 2014, 10:30
Это получается такая особенность этой библиотеки?
А как мне тогда быть, если я хочу воспользоваться ею статически :(
Нет никакой разницы: статически/динамически.
В main самой первой строкой создавайте экземпляр QApplication:
Код
C++ (Qt)
int main( int argc, char *argv[] )
{
   QApplication app( argc, argv );
 
   // Дальше все остальное
   ...
}
 


Название: Re: QScintilla
Отправлено: Simpleton от Май 26, 2014, 11:07
Вы не поверите, но я именно так и делал :)


Название: Re: QScintilla
Отправлено: lesav от Май 26, 2014, 17:40
Для корректной работы дебаг/релиз приложения, необходимо и достаточно линковать свое приложение с соответствующими (дебаг/релиз) библиотеками

Код:
    CONFIG(debug, debug|release):LIBS += -lqscintilla2d
    else:                        LIBS += -lqscintilla2


Название: Re: QScintilla
Отправлено: Simpleton от Май 26, 2014, 22:47
Благодарю!
Попробую на деле.