Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не собирается проект с русскими буквами, Компилятор DEV C++ 
V
    Опции темы
Anikmar
Дата 20.9.2009, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 5
Всего: 59



Для проверки свох dll, созданых на билдере установил Dev C++ (чтобы проверять сторонней штукой).
Ни разу не видел - первые впечатления самые благоприятные. Очень легкая и быстрая штука. Окошки на нем рисовать долго, поэтому проверяю из консоли. И вот с чем столкнулся:
Если работаю с типом wchar_t, то работает сие только если внутри строки английские буквы.
т.е.
Код

wprintf(L"Hello!"); // Работает
wprintf(L"Привет!"); // Ошибка при сборке

Ошибка:
Illegal byte sequence 

Как я понял ругается линкер. Как его уговорить? Где что подкрутить?

PM MAIL ICQ   Вверх
zim22
Дата 20.9.2009, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата

Данная ошибка возникает, когда используется указатель на Unicode строку, но в самой строке используются символы не-Unicode. 
Чаще всего возникает при использовании компилятора MinGW под Windows, где кодировкой по-умолчанию является CP1251.

источник


--------------------
PM MAIL   Вверх
Anikmar
Дата 20.9.2009, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 5
Всего: 59



zim22, спасибо, конечно. Но как с этим бороться? Можно все и по-англицки писать, но проблема в том, что многие мои проверяемые функции из DLL шлют имено wchar_t строки. И этот поросенок (компилятор) напрочь не хочет их выводить. Под отладчиком вроде похоже на правду, но не под отладчиком же все смотреть!

Думаю, что если победю эту ошибку, то и вывод наладится. А вот с чем это может быть связано пока не врублюсь - там настроек то три штуки, тут где-то в другом месте подкручивать надо.

Чую, что литр, а доказать - не могу.  smile 

Dev же с *nix вроде как в винду пришел, а они любители всякие настроечные файлы создавать. Может он где-то рядом?
PM MAIL ICQ   Вверх
zim22
Дата 20.9.2009, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(Anikmar @  20.9.2009,  21:01 Найти цитируемый пост)
. Но как с этим бороться?

у меня DevCPP нет под рукой. Вот как это лечится в Code::blocks:
Цитата

First goto the menu "Project->Build Options" then click your project name. Inside of your global project settings select "Compiler Settings" then click "Other Options" tab, now in that multiline text control write this:

-finput-charset=iso-8859-1

That will fix the problem compiling the standard Latin characters available in the ascci table: á é í ó ú ñ Ñ É and others I does not remember.

источник
***
может CodeBlocks поставишь вместо DevCPP? smile
скачать(19.3 Mb)

Это сообщение отредактировал(а) zim22 - 20.9.2009, 21:13


--------------------
PM MAIL   Вверх
Anikmar
Дата 20.9.2009, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 5
Всего: 59



Цитата(zim22 @  20.9.2009,  21:10 Найти цитируемый пост)
у меня DevCPP нет под рукой. Вот как это лечится в Code::blocks:

Эх, если бы в Dev C++ был такой замечательный пункт в настройках проекта... (Либо если он есть и я бы знал где он находится...) Я сначала думал, что это можно только при создании нового проекта указать. Создал еще один - ни фига, та же хрень.

Блин - столько времени на ерунду теряю, стыдно даже.

Не окна же рисовать - запарно вручную! Хотел на студии проверить - но она мертво упала, надо переустанавливать, а это тоже гоноболь еще та. Может еще что-нибудь легкое и хорошее типа DevC++ есть? 
PM MAIL ICQ   Вверх
zim22
Дата 21.9.2009, 08:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(Anikmar @  20.9.2009,  21:14 Найти цитируемый пост)
Может еще что-нибудь легкое и хорошее типа DevC++ есть? 

Code::blocks smile


--------------------
PM MAIL   Вверх
Anikmar
Дата 21.9.2009, 08:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 5
Всего: 59



Цитата(zim22 @  21.9.2009,  08:08 Найти цитируемый пост)
Code::blocks

Это что? И с чем едят?
PM MAIL ICQ   Вверх
zim22
Дата 21.9.2009, 08:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(Anikmar @  21.9.2009,  08:11 Найти цитируемый пост)
Это что? И с чем едят?

это улучшенный devcpp
http://www.codeblocks.org/


--------------------
PM MAIL   Вверх
Anikmar
Дата 21.9.2009, 08:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 5
Всего: 59



Попробую с ним.
Вообще странная фишка.
Я посмотрел - с ней многие столкнулись, но нигде не смог найти решения. Правда на одном китайском форуме вроде что-то интересное проскакивало, но ответ был в иероглифах, а в них я гораздо хуже, чем в английском. Прямо скажем намного хуже. Вернее совсем никак.  smile 
PM MAIL ICQ   Вверх
zim22
Дата 21.9.2009, 08:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(Anikmar @  21.9.2009,  08:17 Найти цитируемый пост)
Попробую с ним.

только качай версию с уже встроенным mingw. она лучше.
выше я уже давал ссылку на неё.


--------------------
PM MAIL   Вверх
Anikmar
Дата 21.9.2009, 08:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 5
Всего: 59



Установил.
Код:
Код

#include <iostream>

using namespace std;

int main()
{
    wchar_t Str[] = L"Мне надоело бороться с какой-то фигней!";
    // wchar_t Str[] = L"Hello world!";
    wprintf(Str);
    return 0;
}


При первой попытке - та же ошибка. Но здесь есть настройки редактора. Поставил кодировку UTF-8 - ошибка исчезла, правда строчка не выводится.
Попробовал UTF-32, default - таже фигня.
Т.е. wprintf выдает пустую строку.

В принципе сдвиг ощутимый - по крайней мере уже поэкспериментировать можно.
PM MAIL ICQ   Вверх
ller
Дата 21.9.2009, 08:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 4.8.2008
Где: г. Таганрог

Репутация: 2
Всего: 4



Есть еще CodeLite тот же Code::Block только вид сбоку. Я ей пользуюсь. У лайта вид похуже чем у блока, но вроде как блок в прошлом году вышел последний.
PM MAIL   Вверх
zim22
Дата 21.9.2009, 08:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Anikmar, что-то ты не то делаешь.
со случаем
Цитата

wprintf(L"Привет!"); // Ошибка при сборке

я боролся так:
Codeblocks-Create New Project-Console Application-Next-C++-NEXT-NEXT-NEXT...

клацаем слева на файле main.cpp (в папке Sources)
Код

#include <iostream>

using namespace std;

int main()
{
    cout << "Hello world!" << endl;
    return 0;
}



добавляем строку wprintf(L"Привет!"); 
билдим (CTRL+F9)
получаем ошибку
Цитата

main.cpp|7|converting to execution character set: Illegal byte sequence|


добавляем кодировку 
Цитата

-finput-charset=iso-8859-1

и всё. ошибки нет. всё отлично. в чём проблема?


--------------------
PM MAIL   Вверх
Anikmar
Дата 21.9.2009, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 5
Всего: 59



Цитата(zim22 @  21.9.2009,  08:49 Найти цитируемый пост)
Anikmar, что-то ты не то делаешь.

Ага, я это не добавил.

Теперь добавил - ошибки нет, получаю в консоли крякозябры. Это прогресс, уже лучше. Думаю крякозябры из-за того, что менял кодировку в редакторе. Ща проверю на новом проекте.
PM MAIL ICQ   Вверх
mrbrooks
Дата 21.9.2009, 09:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 19
Всего: 306



используйте C# - в нем таких проблем нет  smile шутке


Anikmar, кстати  камрад - ради спортивного интереса проверь - как оно вот так:

Код

std::locale::global(std::locale("Russian"));
std::cout << "Хеллоу ворлд!\n";

PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0907 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.