LINUX.ORG.RU

При кросскомпиляции с линукса на винду ломается поддержка кодировок.

 ,


0

1

Как быть? Список кодировок становится пуст (QTextCodec), если использовать компиляцию родными средствами, то всё нормально. Но при компиляции родными средствами другое не работает, да и не Ъ.

★★★★★

Ты бы минимальный кусок кода привёл, на котором воспроизводится. Ну и результат с нативным и кросс компиляторами.

Ну и версии Qt, компиляторов, флаги компиляции. Кароче нормальный тест-кейс.

DELIRIUM ☆☆☆☆☆
()
Последнее исправление: DELIRIUM (всего исправлений: 1)
Ответ на: комментарий от DELIRIUM

qt5.0, gcc, с++11

QTextCodec::setCodecForLocale(QTextCodec::codecForMib(X)); что вместо Х не подставляй, не работает. пробовал прочекать список кодировок, там только одна, и та кривая.

флаги компиляции точно надо смотреть, делаю /home/user_name/mxe/usr/i686-w64-mingw32.static/qt5/bin/qmake -win32 && make

но внутри там всё должно быть стандартно, разве что 32 и компиляция со статическими либами. кстати, какое отношение флаги компиляции вообще имеют к кодировкам — я не в курсе.

next_time ★★★★★
() автор топика
Ответ на: комментарий от next_time

А оно так работает? С кросс-скомпилированным симейком? Вроде как в доке раньше предлагалось спек файлы для кросс компиляции юзать.

pon4ik ★★★★★
()

А make ты чей используешь? Я под виндой использовал make из tools:

Qt5.3.1\Tools\mingw482_32\bin\mingw32-make.exe

energyclab
()
Ответ на: комментарий от AF

Оупс, я очепятался, не CMake а qmake имел ввиду я.

C CMake всё как раз было бы изи, тулчейн файл и путь к либам если они в префикс тулчейна не поставленны. qmake конечно один из пионеров метасобиралок, поэтому и не всё там всегда гладко.

Совсем уж оффтоп: никто не в курсе кто был первым в метасобиралках?

pon4ik ★★★★★
()
Ответ на: комментарий от pon4ik

C qmake тоже все просто. При сборке Qt запоминается инфа о компилере путях и т д. А потом, при вызове qmake, вся эта инфа и юзается.
Т е главное - это вызвать нужный qmake.

AF ★★★
()

Насколько я помню, в виндовом порте GCC до сих пор ленятся впилить поддержку чего-нить отличного от ASCII.

one_more_hokum ★★★
()
Ответ на: комментарий от AF

Хм, а разве mkspec файлы, это не аналог тулчейн файлов симейковских? Просто не очень радует идея держать разные бинари для разных конфигураций сборки.

pon4ik ★★★★★
()
Ответ на: комментарий от pon4ik

Полной аналогии нет. mkspec много чего спицифического исключительно для внутренней кухни Qt. Но вот пути к установленный библиотекам где-то в другом месте. Емним что-то при сборке даже в бинари вкомпиливается.

AF ★★★
()
Ответ на: комментарий от AF

sorry, спешил, уходя на работу. qt 5.3.2, как раз

выдержка из выхлопа make

i686-w64-mingw32.static-windres -i icon.rc -o release/icon_res.o --include-dir=. -DUNICODE -DQT_NO_DEBUG -DQT_NETWORK_LIB -DQT_SERIALPORT_LIB -DQT_CORE_LIB



i686-w64-mingw32.static-g++ -Wl,-s -Wl,-subsystem,console -mthreads -o release/appname.exe release/main.o release/worker.o release/terminaldata.o release/filerwconv.o release/appname_plugin_import.o release/moc_filerwconv.o  -L/home/username/mxe/usr/i686-w64-mingw32.static/qt5/lib -lQt5SerialPort -lsetupapi -L/home/username/mxe/usr/i686-w64-mingw32.static/qt5/plugins/bearer -lqgenericbearer -lqnativewifibearer -lQt5Network -ldnsapi -lssl -lcrypto -lgdi32 -lcrypt32 -lQt5Core -lole32 -luuid -lws2_32 -ladvapi32 -lshell32 -luser32 -lkernel32 -lz -lsicuin -lsicuuc -lsicudt -lpcre16 release/icon_res.o 
make[1]: Leaving directory `/home/username/appname'
anonymous
()
Ответ на: комментарий от anonymous
std::cout<<"~~~~"<<QTextCodec::availableCodecs().size()<<"~~~~\n";
std::cout<<"~~~~"<<QString("яяя").toLocal8Bit().constData()<<"~~~~\n";

Выхлоп:

~~~~1~~~~ ~~~~???~~~~

anonymous
()
Ответ на: комментарий от one_more_hokum

если собирать из-под винды, то с кодировками всё нормально, но там уже геморрой со статической сборкой

anonymous
()
Ответ на: комментарий от anonymous

Хм, а исходники в какой кодировке?

Таки не стоит забывать о том, что есть не только QString:toXXX, но и QString::fromXXX

AF ★★★
()
Ответ на: комментарий от AF

Хм, а исходники в какой кодировке?

ut8, могу сменить, но не вижу смысла: мне нужно, чтобы коммандлайн аргументы передавались без проблем с РЯ.

Таки не стоит забывать о том, что есть не только QString:toXXX, но и QString::fromXXX

там же механизм действия должен быть аналогичным, разве нет? если «отвалилось» 1-о, отвалится и другое

anonymous
()
Ответ на: комментарий от AF

Собрал. Проверил. Ожидаемо, «выводит кракозябры».

anonymous
()
Ответ на: комментарий от Torvus

всё по дефолту. как проверить, плагином оно идёт, или нет?

next_time ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.