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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: [Решено]Проблема в чужом коде  (Прочитано 10050 раз)
Vitto74
Гость
« : Август 26, 2010, 09:22 »

Доброго времени суток.
Я решил создать маленькое ответвление от проекта EiskaltDC++. В нем будут только небольшие изменения интерфейса.
Но параллельно хочется разобраться как в нем все устроено.
При переносе проекта в QtCreator я добавил несколько директив препроцессора для облегчения кроссразработки (UPnP нет в Linux, а DBus нет в винде) да и некоторые необходимые записи в pro-файле отсутствовали (модуль QtNetwork не объявлен).
Но кроме прочих проблем вылезла ошибка и самом ядре DC++. Ядро я менять не хочу т.к. планирую брать его без изменений из проекта EiskaltDC++ (они его совсем немного подпиливают).
Ошибка такая
Код:
dcpp/Streams.h:140: error: there are no arguments to ‘_’ that depend on a template parameter, so a declaration of ‘_’ must be available
dcpp/Streams.h:140: note: (if you use ‘-fpermissive’, G++ will accept your code, but allowing the use of an undeclared name is deprecated)
Вот сама процедура
Код:
virtual size_t write(const void* buf, size_t len) throw(Exception) {
if(maxBytes < len) {
throw FileException(_("More bytes written than requested")); // Та самая строчка 140
}
maxBytes -= len;
return s->write(buf, len);
}
С чистым С/С++ особо сталкиваться не приходилось т.к. перешел с Delphi сразу на Qt4 (знаю только основы C++).
Помогите решить проблему или подскажите где я могу найти её решение.
« Последнее редактирование: Сентябрь 01, 2010, 08:50 от Vitto74 » Записан
merke
Гость
« Ответ #1 : Август 26, 2010, 09:25 »

убери знак _
Записан
merke
Гость
« Ответ #2 : Август 26, 2010, 09:31 »

если не поможет вообще закоменти эту строчку)))
Записан
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #3 : Август 26, 2010, 09:41 »

что то мне это gettext напомнило
именно они любят

_("string") писать  - почитай в эту сторону
Записан
Sancho_s_rancho
Гость
« Ответ #4 : Август 26, 2010, 09:42 »

Это значит #define _(x) gettext (x)
В Qt ближе всего соответсвует tr()
Записан
BRE
Гость
« Ответ #5 : Август 26, 2010, 10:44 »

(UPnP нет в Linux, а DBus нет в винде)
Как понять UPnP нет в linux?
Да и DBus есть в венде. Соберай-запускай-пользуйся.  Улыбающийся
Записан
Vitto74
Гость
« Ответ #6 : Август 26, 2010, 10:58 »

Удалил знак '_' и при компиляции ругается на функции str и F_
Их там много (22) и все они (которые я видел) используются при отправке строк в логи.

Может их заменить при помощи препроцессора?

PS погуглил на счет UPnP и DBus - извиняюсь, сам дурак.
Записан
Sancho_s_rancho
Гость
« Ответ #7 : Август 26, 2010, 11:43 »

Удалил знак '_' и при компиляции ругается на функции str и F_
Их там много (22) и все они (которые я видел) используются при отправке строк в логи.

Может их заменить при помощи препроцессора?

PS погуглил на счет UPnP и DBus - извиняюсь, сам дурак.
Можно и gettext подключить.
http://www.opennet.ru/docs/RUS/gtk-reference/gtk-question-index.html
Записан
pavelvat
Гость
« Ответ #8 : Август 26, 2010, 22:53 »

Доброго времени суток.
Я решил создать маленькое ответвление от проекта EiskaltDC++. В нем будут только небольшие изменения интерфейса.
Но параллельно хочется разобраться как в нем все устроено.
При переносе проекта в QtCreator я добавил несколько директив препроцессора для облегчения кроссразработки (UPnP нет в Linux, а DBus нет в винде) да и некоторые необходимые записи в pro-файле отсутствовали (модуль QtNetwork не объявлен).

Какие именно небольшие изменения интерфейса планируются? Если это что-то вроде добавления кнопок в стиле "блокнот", "сейчас играет", то для этого создатели предусмотрели возможность писать расширения на QtScript, подробнее на официальном сайте на вкладе "wiki".
Сборка выполняется cmake, а не qmake. На официальном форуме Qt говорилось, что систему сборки qmake выпилят и перейдут на cmake, так что не стоит тратить время на её изучение, приступай сразу к cmake.
Ты исходники из транка брал или старые из версии 2.0.3, просто в транке уже давно добавили флаги для cmake отключающие QtDBus который в Windows отсутствует, и возможность отключить UPnP, все эти флаги описаны в файле INSTALL.
Буквально на днях в транке EiskaltDC++ заменили библиотеку libupnp которая не собиралась в mingw в Windows на библиотеку miniupnp, так что теперь UPnP поддерживается на всех платформах.
По поводу сборки, в папке win32 лежит файл с инструкциями по сборке под Windows в mingw и соответствующие bat-файлы.
« Последнее редактирование: Август 26, 2010, 23:01 от pavelvat » Записан
Vitto74
Гость
« Ответ #9 : Август 26, 2010, 23:17 »

На pro я уже забил и копаюсь в cmake.
Сбору использую старую (2.0.3).
Изменения - одна галочка на панели поиска, два окошка и один модуль + слегка переделанное окно с результатами поиска.
Записан
pavelvat
Гость
« Ответ #10 : Август 26, 2010, 23:27 »

сборка под windows появилась после 2.0.3
получить исходники можно так:
установить если не установлен Slik-Subversion затем выполнить в командной строке:
svn checkout http://eiskaltdc.googlecode.com/svn/branches/trunk/ eiskaltdc-read-only

Зачем делать форк проекта, ты можешь просто присылать свои патчи. Если возникнут какие-то вопросы можно связаться с разработчиками в jabber конференции eiskaltdc@conference.gentoo.ru
« Последнее редактирование: Август 26, 2010, 23:53 от pavelvat » Записан
Vitto74
Гость
« Ответ #11 : Август 27, 2010, 18:04 »

На сколько я понял то, что в trunk еще не стабильно. Собственно по этому пилю 2.0.3. Одна из целей максимальное упрощения переноса изменений в новые версии.
Записан
pavelvat
Гость
« Ответ #12 : Август 27, 2010, 23:55 »

Чтобы клиент собирался под Windows пришлось сделать несколько изменений в коде, а чтобы то что собралось правильно работало в Windows были сделаны ещё изменения. А ты используешь старые исходники от версии 2.0.3, в которых все эти изменения отсутствуют, соответственно клиент просто не соберётся под Windows.
Записан
Vitto74
Гость
« Ответ #13 : Август 29, 2010, 12:31 »

Ясно. Тогда придется еще подождать, пока допилят версию, собирающуюся под все ОС
Записан
pavelvat
Гость
« Ответ #14 : Август 29, 2010, 17:28 »

А зачем ждать то? - как получить исходники из разрабатываемой версии я объяснил выше. Вообще, в клиент вносятся изменения, по прошествии определённого интервала времени выпускается релиз, понятие стабильный или нестабильный - весьма условно. Следующий релиз будет ориентировочно в начале октября. И повторюсь, какой смысл делать форк когда можно просто прислать патчи в оригинальный проект? - если авторы сочтут твои изменения нужными и полезными их включат в оригинал.
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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