Название: Конфликт хидеров при компиляции плагина mysql Отправлено: cresta от Март 04, 2009, 17:00 При компиляции плагина mysql конфликтуют хидер mysql_com.h и виндовый winsock.h
В обоих хидерах есть тип данных SOCKET, но определены они по разному. c:\qt\4.4.3\src\plugins\sqldrivers\mysql\mysql_headers\mysql_com.h(175) : error C2371: SOCKET: переопределение; различные базовые типы C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\winsock.h(54): см. объявление 'SOCKET' Для чего тут винсок выскочил? Может его как-то отключить? Мне кажется для компиляции плагина он абсолютно не нужен. Есть ли какие ключи для nmake, которые позволяют отключать ту или иную либу из процесса компиляции? Название: Re: Конфликт хидеров при компиляции плагина mysql Отправлено: ритт от Март 04, 2009, 17:49 c:\qt\4.4.3\src\plugins\sqldrivers\mysql\mysql_headers ?
Название: Re: Конфликт хидеров при компиляции плагина mysql Отправлено: cresta от Март 04, 2009, 19:29 Это я туда положил хидеры.
Сами они нормальные, я ими не раз пользовался. В частности делал класс-обертку для mysql Название: Re: Конфликт хидеров при компиляции плагина mysql Отправлено: ритт от Март 04, 2009, 20:14 а кутэ собирается с ключём -direct3d?
Название: Re: Конфликт хидеров при компиляции плагина mysql Отправлено: cresta от Март 04, 2009, 22:21 нет.
Никаких ключей не задано в явном виде, при конфигурировании видно в выводе, что поддержка direct3d не включена Название: Re: Конфликт хидеров при компиляции плагина mysql Отправлено: ритт от Март 04, 2009, 22:36 мб тогда убрать Microsoft SDKs из путей?
Название: Re: Конфликт хидеров при компиляции плагина mysql Отправлено: cresta от Март 05, 2009, 11:40 в путях sdk не оговаривается.
скачал новый пакет mysql, с ним плагин собрался. Правда непонятно, почему плагин называется qsqlmysqld4.lib? версия mysql была скачана пятая, а не четвертая. Это вообще принципиально или нет? Название: Re: Конфликт хидеров при компиляции плагина mysql Отправлено: pastor от Март 05, 2009, 11:42 скачал новый пакет mysql, с ним плагин собрался. Правда непонятно, почему плагин называется qsqlmysqld4.lib? версия mysql была скачана пятая, а не четвертая. Это вообще принципиально или нет? 4 - это мажорная версия Qt и это не принципиально Название: Re: Конфликт хидеров при компиляции плагина mysql Отправлено: cresta от Март 05, 2009, 11:53 Все понял, спасибо
Название: Re: Конфликт хидеров при компиляции плагина mysql Отправлено: cresta от Март 05, 2009, 16:39 Это какое-то болото :(
Вроде все было нормально, но не работал у меня qDebug. Почитал форум и по советам решил пересобрать qt с ключом -debug-and-release Вот все параметры конфигуратора: configure -debug-and-release -static -no-phonon -no-phonon-backend -no-qt3support -no-opengl -arch windows -platform win32-msvc2008 Собралось, затем начал опять плагин mysql компилировать. Компиляция закончилась без ошибок. Пошел проверять проект, который работал до пересборки qt - не компилируется: не находит файл c:\Qt\4.4.3\lib\QtSql4.lib Файла qsqlmysqld4.lib который был до пересборки, тоже нет. И qt не работает, и два часа компиляции коту под хвост :( Что за ерунда такая? В чем проблема? Название: Re: Конфликт хидеров при компиляции плагина mysql Отправлено: lit-uriy от Март 05, 2009, 17:47 перед новой конфигурацией, делал команду:
make confclean или нет?? Название: Re: Конфликт хидеров при компиляции плагина mysql Отправлено: lit-uriy от Март 05, 2009, 17:49 да изачем тебе в статике отладка, держи две сборки Qt, одна - static/release, вторая - shared/dabug_and_release
Название: Re: Конфликт хидеров при компиляции плагина mysql Отправлено: cresta от Март 05, 2009, 18:26 nmake confclean делал
после этого опять сконфигурировал и собрал с такими ключами: >configure -debug -no-phonon -no-phonon-backend -no-opengl -no-sql-sqlite -arch windows -platform win32-msvc2008 >nmake sub-src после опять собрал плагин mysql Теперь ситуация такая: мой тестовый проект из студии не собирается. По прежнему пишет, что отсутствует файл c:\Qt\4.4.3\lib\QtSql4.lib Из командной строки собирается только debug-версия, но qDebug по-прежнему не работает. Вывода от qDebug в консоль нет. Release не собирается вообще. Запутался уже в этих ключах :( Как сделать, чтобы qDebug работал? Пусть будет shared, ничего страшного. Что значит две сборки? Создавать две директории с сорцами qt и два раза компилировать либы? И проекты создавать в двух экземплярах (дебаг/релиз)? И для каждого вида проектов устанавливать свои переменные среды при компиляции? Или что? Название: Re: Конфликт хидеров при компиляции плагина mysql Отправлено: lit-uriy от Март 05, 2009, 20:13 >>Что значит две сборки? Создавать две директории с сорцами qt и два раза компилировать либы? И проекты создавать в двух экземплярах (дебаг/релиз)? И для каждого вида проектов устанавливать свои переменные среды при компиляции? Или что?
Да Название: Re: Конфликт хидеров при компиляции плагина mysql Отправлено: cresta от Март 05, 2009, 20:33 Охренеть, это ж сколько места надо будет на винте? :o
Дебаг занимает 14 Гигов Релиз около 5 Гб. Ну ладно, бог с ним, пусть будет 19 гигов, а как сделать так, чтобы qDebug работал? Ключ -debug никак не помогает :( Название: Re: Конфликт хидеров при компиляции плагина mysql Отправлено: lit-uriy от Март 05, 2009, 22:14 >>Дебаг занимает 14 Гигов
У меня Qt4.4.3, самособранная занимает 1.4 ГиБ >>а как сделать так, чтобы qDebug работал? Ключ -debug а что значит не работает? Такой пример: test.pro Код: TEMPLATE = app Код: #include <QApplication> Название: Re: Конфликт хидеров при компиляции плагина mysql Отправлено: cresta от Март 06, 2009, 08:27 Отследил, в чем дело: если пользоваться только qmake для построения и компиляции проекта, то qDebug работает. Вывод информации есть. А вот если сделать
qmake -tp vc -o test.vcproj test.pro и полученный файл test.vcproj открыть в студии и далее выполнять сборку в студии, то вывод от qDebug присутствует только в окошке вывода самой студии. Видимо что-то студия делает так, чтобы перенаправить вывод из консоли к себе, в свое окошко "Вывод". Вот только смотреть в студийное окошко неудобно: само окно маленькое, и вывод от qDebug перемежается выводом различной служебной информации. И пока полностью не пересоберешь проект, вывод qDebug в консоли не будет. Получается, либо qDebug в консоли, и теряются удобства студии (компиляция, точки останова, просмотр переменных...), либо qDebug выводит в окно студии, но вывод читать неудобно. Как скрестить коня и трепетную лань ? |