Название: статическая библиотека и транслятор. Не работает! Отправлено: kuzulis от Июнь 15, 2009, 14:54 Доброго времени суток...
Я решил тут собрать приложение с использованием статической библитеки. В этой библиотеке я некоторые строки писал через tr... Сделал всё как надо, т.е: 1. Создал в library.pro Код: ... 2. Создал сам файл resources.qrc Код: <!DOCTYPE RCC><RCC version="1.0"> 3. сгенерировал файлы *.ts и *.qm 4. собрал саму эту библиотеку Цитировать qmake library.pro 5. появился файл library.a .. вроде тут все понятно...make теперь, подключаю её в мое приложение: 1. В файл проекта app.pro как надо подключаю её и т.п. 2. В main.cpp транслятор гружу так: Код: .... 4. Запускаю приложение - НО в консоли моя дебажка выводит : "Load translator fail" т.е. функция возвращает false! Я уже пробовал и так и сяк: и менял *_ru.qm, и *_ru_RU.qm и в файле *.qrc убирал префиксы и т.п. - НО грузить из ресурсов не хочет! Поэтому: 1. Как все-таки это сделать? 2. Как узнать, прицепились ли ресурсы к библиотеке при её компиляции? ЗЫ: QT 4.1.1 :) Название: Re: статическая библиотека и транслятор. Не работает! Отправлено: kuzulis от Июнь 15, 2009, 15:25 хм... пробовал комментировать в файле Library.pro при сборке библиотеки :
Код: #RESOURCES += resources.qrc и потом убирать комментарий и опять собирать библиотеку - и получается, что размер моей библиотеки что так, что эдак получается одинаковый.. т.е получается что ресурсы не вкомпиливаются в неё!! :( Название: Re: статическая библиотека и транслятор. Не работает! Отправлено: ритт от Июнь 15, 2009, 15:28 бгг...всё вкомпиливается - просто надо пересобирать начисто...
а по теме: Цитировать - if (!translator.load( ":/translations/qserialdevice_"+locale+".qm" )) + if (!translator.load( ":/translations/translations/qserialdevice_"+locale+".qm" )) Название: Re: статическая библиотека и транслятор. Не работает! Отправлено: kuzulis от Июнь 15, 2009, 15:43 НЕ работает!
Цитировать бгг...всё вкомпиливается - просто надо пересобирать начисто... Ёпт! Я так и делаюНазвание: Re: статическая библиотека и транслятор. Не работает! Отправлено: ритт от Июнь 15, 2009, 17:24 Q_INIT_RESOURCE ?
Название: Re: статическая библиотека и транслятор. Не работает! Отправлено: kuzulis от Июнь 15, 2009, 18:27 Цитировать Q_INIT_RESOURCE ? я не понял как этот макрос применить в моем случае... т.к. нужно : 1. вызывать эту ф-ю (макрос или чо там) из main 2. в качестве параметра указывать имя файла *.qrc - а в моем случае это файл resources.qrc который находится в директории БИБЛИОТЕКИ а не самого приложения... и если я добавляю в приложение ( в main.cpp) : Код: ... Цитировать [den@myhost default]$ make g++ -c -pipe -march=x86-64 -mtune=generic -O2 -pipe -D_REENTRANT -Wall -W -DQT_NO_DEBUG -DQT_CORE_LIB -I/usr/share/qt/mkspecs/linux-g++ -I. -I/usr/include/QtCore -I/usr/include/QtCore -I/usr/include -I../../src -Ibuild/moc -o build/obj/main.o main.cpp g++ -Wl,-rpath,/usr/lib -o release/default build/obj/main.o -L../../src/release -L/usr/lib -lqserialdevice -lQtCore -lpthread build/obj/main.o: In function `main': main.cpp:(.text+0x19): undefined reference to `qInitResources_resources()' collect2: выполнение ld завершилось с кодом возврата 1 make: *** [release/default] Ошибка 1 [den@myhost default]$ Название: Re: статическая библиотека и транслятор. Не работает! Отправлено: kuzulis от Июнь 15, 2009, 19:00 Даже не работает приложение , которое я прицепил в аттаче!! :( Что я делаю не так?
Название: Re: статическая библиотека и транслятор. Не работает! Отправлено: kuzulis от Июнь 15, 2009, 21:10 Блина, работает только если принудительно указывать имя файла перевода!
Код: ... Иначе никак не хочет! Как скомпилировать приложение чтобы ресурсы с исполняемым файлом объединились? Я уже злоййй!!! Бьюсь об стену - и она не выдердживает!! :( Название: Re: статическая библиотека и транслятор. Не работает! Отправлено: BRE от Июнь 15, 2009, 21:42 Иначе никак не хочет! Как скомпилировать приложение чтобы ресурсы с исполняемым файлом объединились? Я уже злоййй!!! Бьюсь об стену - и она не выдердживает!! :( Спокойней, удары об стену никому на пользу не идут. :)В main.cpp добавляй: Код
В hello.pro: CONFIG = release warn_on qt console меняем на это CONFIG += release warn_on qt console и все будет Ok. ;) Название: Re: статическая библиотека и транслятор. Не работает! Отправлено: kuzulis от Июнь 16, 2009, 07:53 2 BRE,
Спасибо, никогда бы не додумался о правке *.pro :) Но теперь вместо слова : "Привет" выводится (под Windows XP) : Цитировать .... C:\Temp\hello>release\hello.exe "ru_RU" "╧ЁштхЄ" ^C C:\Temp\hello> .... Эту крякозяблу как победить? :) Название: Re: статическая библиотека и транслятор. Не работает! Отправлено: kuzulis от Июнь 16, 2009, 09:17 пробовал в main.cpp писать:
Код: ... и вместо Windows-1250 писал и Windows-1251 и UTF-8 - но ничего не изменилось.. как выводился крякомусор так и выводится :( Название: Re: статическая библиотека и транслятор. Не работает! Отправлено: BRE от Июнь 16, 2009, 09:22 и вместо Windows-1250 писал и Windows-1251 и UTF-8 - но ничего не изменилось.. как выводился крякомусор так и выводится :( По венде я не советчик, но на сколько я помню, у нее в консоли 866 кодировка. :)Название: Re: статическая библиотека и транслятор. Не работает! Отправлено: kuzulis от Июнь 16, 2009, 09:55 Ёптель! :)
Наконец то заработало! У меня заработало, если написать так: Код: ... !!! Название: Re: статическая библиотека и транслятор. Не работает! Отправлено: spirit от Июнь 16, 2009, 12:03 а CP-866 разве не пашет?
Название: Re: статическая библиотека и транслятор. Не работает! Отправлено: kuzulis от Июнь 16, 2009, 12:42 Дык в ассистенте (у меня) написано только это:
Цитировать The supported encodings are: Apple Roman Big5 Big5-HKSCS EUC-JP EUC-KR GB18030-0 IBM 850 IBM 866 IBM 874 ISO 2022-JP ISO 8859-1 to 10 ISO 8859-13 to 16 Iscii-Bng, Dev, Gjr, Knd, Mlm, Ori, Pnj, Tlg, and Tml JIS X 0201 JIS X 0208 KOI8-R KOI8-U MuleLao-1 ROMAN8 Shift-JIS TIS-620 TSCII UTF-8 UTF-16 UTF-16BE UTF-16LE Windows-1250 to 1258 WINSAMI2 и тут нету cp866 :) Название: Re: статическая библиотека и транслятор. Не работает! Отправлено: ритт от Июнь 18, 2009, 08:06 хм, а ведь я порой даю дельные советы :)
/* что ж меня с первого раза-то никто не слышит? ( */ Название: Re: статическая библиотека и транслятор. Не работает! Отправлено: kuzulis от Июнь 18, 2009, 09:28 2 Константин ,
спасибо канечно, но в данном случае все дело было в том, что в конфиге нужно писать += вместо = :) ... вот мне интересно.. почему происходит такая путаница с этим? нигде в литературе не встречал чтобы была разница как писать: CONFIG = release warn_on qt console или CONFIG += release warn_on qt console или QT += network xml или QT = network xml т.е не описаны нюансы .... и в зависимости от этого уже и по-разному компилятор компилит код! :) т.е. если использовать += - то qmake создаст Makefile.debug и создаст директорию Debug!!! o_O Почему так происходит - я так и не понял.. ведь нигде в строке нет упоминания о debug !! ЗЫ: но это наверное тема другого топика! Название: Re: статическая библиотека и транслятор. Не работает! Отправлено: ритт от Июнь 18, 2009, 09:38 изначально было очевидно, что подставляется неверный путь;
затем неочевидное - использование макроса Q_INIT_RESOURCE при статической линковке. а про Цитировать CONFIG = release warn_on qt console - всё так же просто, как и дляили CONFIG += release warn_on qt console Цитировать QString CONFIG("kill'em all "); CONFIG = release warn_on qt console или CONFIG += release warn_on qt console Название: Re: статическая библиотека и транслятор. Не работает! Отправлено: spirit от Июнь 18, 2009, 09:38 а что будет, если ты напишешь
Код: QString str = "hello"; Код: QString str = "hello"; аналогично и с про-файлом. Название: Re: статическая библиотека и транслятор. Не работает! Отправлено: spirit от Июнь 18, 2009, 09:39 нэуспэл :)
Название: Re: статическая библиотека и транслятор. Не работает! Отправлено: kuzulis от Июнь 18, 2009, 09:44 Ёлки! Но в документации по QT4 ( в Ассистенте) не сказано, что включено в CONFIG по умолчанию!!!!
т.е подразумевалось (мною) что изначально CONFIG пуст!!!! в отличие скажем от QT - для которой в документации сказано что включено по умолчанию - а что нет. Название: Re: статическая библиотека и транслятор. Не работает! Отправлено: kuzulis от Июнь 18, 2009, 09:47 и мне интересно.. какие вообще у ключа CONFIG по умолчанию включены опции??!!
Название: Re: статическая библиотека и транслятор. Не работает! Отправлено: spirit от Июнь 18, 2009, 09:47 не нервничай. напиши в про-файле
Цитировать message($$CONFIG) и увидешь, что в конфиге.Название: Re: статическая библиотека и транслятор. Не работает! Отправлено: kuzulis от Июнь 18, 2009, 09:59 2 spirit,
спасибо! получилось вот что: Цитировать Project MESSAGE: lex yacc warn_on debug uic resources rtti_off exceptions_off stl_off incremental_of f thread_off windows release ReleaseBuild Release build_pass qt warn_on release link_prl copy_dir_fi les debug_and_release debug_and_release_target precompile_header release shared stl exceptions rtti release ReleaseBuild Release build_pass а как бы теперь узнать про опции : lex yacc uic resources и т.п ??? просто хочется по возможности при сборке проекта выкинуть все "ненужные" опции , чтобы максимально уменьщить и облегчить его! :) Название: Re: статическая библиотека и транслятор. Не работает! Отправлено: ритт от Июнь 18, 2009, 10:16 раз они (опции) там есть по умолчанию, предполагается, что они все нужные...
зачем себе на хвост наступать? |