Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > [QT] Строка в динамической библиотеке


Автор: Kalifriki 6.2.2010, 22:44
Доброго времени суток. Проблема такая:
Я создал динамическую библиотеку, с единственной функцией, которая возвращает QString.
В своей программе подключаю эту библиотеку и вызываю этот метод. Если строка в библиотека набрана английскими символами все нормально, но если в строке есть русские символы - начинаются проблемы, при вызове этой функции получаю кракозябры. Как это можно исправить? И получать из библиотеки нормальные русские символы?
Заранее спасибо.

Автор: KADABRA 7.2.2010, 01:05
Цитата(Kalifriki @  6.2.2010,  22:44 Найти цитируемый пост)
Проблема такая

Система, компилятор, кодировка файла, системная локаль?

Автор: borisbn 7.2.2010, 09:02
В самом начале программы в main.cpp после создания QApplication вставь строку
Код

QTextCodec::setCodecForCStrings ( QTextCodec::codecForName ( "Windows-1251" ) );

Если у тебя другая кодировка (utf-8 или ещё какая-нибудь), то в ковычках надо указать её имя (список есть в описани QTextCodec).
P.S. Вообще-то это не связано с dll-кой. Такой же результат будет если ты просто напишешь функцию, возвращающую QString в основной программе.
P.P.S. Если ты используешь функцию tr для интернационализации, то нужно вызывать не  setCodecForCStrings, а  setCodecForTr. Я обычно вызываю их обе

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)