Титла: Вграждане на библиотеки във изпълним файл на Qt4 Публикувано от: LinuxFanUNIX в May 03, 2009, 23:10 Добър вечер.
Искам да ви попитам как мога да вградя библиотеки на Qt4 програма във изпълнимия файл, така че, потребителя дори и да няма инсталирани Qt4 библиотеките, да може да пусне библиотеките? Благодаря предварително! Титла: Re: Вграждане на библиотеки във изпълним файл на Qt4 Публикувано от: dvasilev в May 04, 2009, 09:18 @LinuxFanUNIX: Чрез статично компилиране. Но имай предвид, че трябва да прекомпилираш Qt библиотеката със -static опция, за да се продуцират съответните .a файлове.
Титла: Re: Вграждане на библиотеки във изпълним файл на Qt4 Публикувано от: task_struct в May 04, 2009, 09:27 Виж и това: http://chrishowells.co.uk/?p=239
Титла: Re: Вграждане на библиотеки във изпълним файл на Qt4 Публикувано от: LinuxFanUNIX в May 04, 2009, 19:30 Така. В момента компилирам, обаче имам един въпрос - пак ли посъщия начин се include-ват файловете, или...?
Благодаря предварително! Титла: Re: Вграждане на библиотеки във изпълним файл на Qt4 Публикувано от: task_struct в May 04, 2009, 21:10 То няма друг начин за инклудване освен с #include <> или #include ""
Титла: Re: Вграждане на библиотеки във изпълним файл на Qt4 Публикувано от: LinuxFanUNIX в May 04, 2009, 21:17 То няма друг начин за инклудване освен с #include <> или #include ""Ми може и да има и друг начин :) Например вместо стандартното QLabel да речем, да се копира qlabel.h или qlabel.a в руута на проекта и тогава да се вгражда. Знам ли. :) Титла: Re: Вграждане на библиотеки във изпълним файл на Qt4 Публикувано от: LinuxFanUNIX в May 05, 2009, 19:28 Опа... При опит да изпълня приложението връща Segmentation fault ;D
Тъй като в това обяснение има доста логика и описва добре проблема - може ли малко помощ. :) Благодаря предварително! Титла: Re: Вграждане на библиотеки във изпълним файл на Qt4 Публикувано от: dvasilev в May 05, 2009, 19:44 @LinuxFanUNIX: Най-грубо казано пипаш неща в паметта, които не би трябвало да може да пипаш. Тоест това не е проблем на статичната компилация. Опитай се да разбереш къде точно гърми програмата и виж кои указатели не са инициализирани.
Титла: Re: Вграждане на библиотеки във изпълним файл на Qt4 Публикувано от: task_struct в May 05, 2009, 19:57 Няколко неща може да са се объркали:
1) Някой обект не се заделя и при опит да се обърнеш към него гърми с Segmentation fault (малко вероятно при съвременните компютри, но все пак можеш да сложиш проверка дали оектите се заделят правилно) 2) Освобождаваш с delete 2 пъти 1 обект. Решение: Прегледай си кода, пусни го през дебъгер. 3) Поради спецификата на сигналите и слотовете в Qt може да се получава следното: Освобождаваш обект, към който все още има неизпълнени ивънти, който главният ивънт лууп се мъчи да изпълни. За да се избегне това, обектите, в който се съмняваш, че може да причинят този проблем освобождавай с void QObject::deleteLater () За повече информация: http://doc.trolltech.com/4.5/qobject.html#deleteLater Успех [_]3 Титла: Re: Вграждане на библиотеки във изпълним файл на Qt4 Публикувано от: LinuxFanUNIX в May 05, 2009, 22:21 Може би за пореден път се убеждавам че Qt4 е може би най-нестабилния език на който на който съм писал. Махнах static-а тъй като при него всичко си беше Segmentation fault. Сложих си версия 4.4.1 който допреди няколко часа си вървеше перфектно, обаче пак - та*ак. Всички Qt4 програми вървят, моите естествено - не. Всичко си ми е наред, обаче нали трябва да се издразни с мене. Вече стана 2 пъти пренаписвам една и съща програма, и накрая, след всички тези безсънни нощи - хоп, не става. Пък може и за всичко да е виновно и тъпото IDE - QtCreator... :(
Абе ще се минава май на Qt3 ама да видим... :( Титла: Re: Вграждане на библиотеки във изпълним файл на Qt4 Публикувано от: LinuxFanUNIX в May 05, 2009, 22:54 И един въпрос:
Segmenrtation fault (гадната грешка която никога не казва къде грешиш), появява ли се при скриптовия Qt4 (примерно Python+Qt4, PHP+Qt4) ? Благодаря предварително! Титла: Re: Вграждане на библиотеки във изпълним файл на Qt4 Публикувано от: dvasilev в May 06, 2009, 01:03 @LinuxFanUNIX: Qt4 не е език, а библиотека. Това, което се бъзика с теб, е C++. Така че и на Qt3 и на GTK да минаваш, то крайният резултат няма да е много по-различен.
Съвсем нормално е програмата да не тръгне от първия път и да ти дава такива грешки. След като ползваш Qt Creator, не виждам какъв е проблема да компилираш програмата в debug режим, да набиеш един breakpoint около мястото където гърми, изпълнявайки ред по ред изходния код да видиш кое точно прецаква работата и след като го откриеш и помислиш какво не е наред, да си оправиш грешката. Вярно, че не е тривиална процедурата, но то без усилия не стават работите. Титла: Re: Вграждане на библиотеки във изпълним файл на Qt4 Публикувано от: LinuxFanUNIX в May 06, 2009, 02:22 @LinuxFanUNIX: Qt4 не е език, а библиотека. Това, което се бъзика с теб, е C++. Така че и на Qt3 и на GTK да минаваш, то крайният резултат няма да е много по-различен.1. Да, това ми е ясно че е от самото C++, но въпросът ми беше друг - примерно ако съм с Qt4 библиотеката, обаче примерно под Python или Perl, тогава би трябвало всичко да е перфектно. :) 2. Ще пробвам с Debuger-а ;) Титла: Re: Вграждане на библиотеки във изпълним файл на Qt4 Публикувано от: dvasilev в May 06, 2009, 08:38 Да, това ми е ясно че е от самото C++, но въпросът ми беше друг - примерно ако съм с Qt4 библиотеката, обаче примерно под Python или Perl, тогава би трябвало всичко да е перфектно. :)Съмнявам се. Най-вероятно ще получиш по-информативно съобщение за грешката. |