Ответы пользователя по тегу MinGW
  • Кириллица в c++. Что с ней не так?

    @res2001
    Developer, ex-admin
    В виндовой консоли есть 2 русские кодировки cp866 и cp1251. Причем cp866 используется по умолчанию! Так же есть еще 65001 (UTF8), которая то же умеет в кирилицу. Пользователь консоли может менять кодировку по собственному усмотрению (команда chcp /?). Как правило встроенные виндовые утилиты командной строки правильно работают с любой установленной кодировкой (можете сами в этом убедиться).

    Дополнительно к кодировкам самой консоли винды добавляется еще кодировка в которой написаны ваши исходники. Кодировка исходников должна быть совместима с кодировкой консоли. Если не совместима, то нужно или переключать кодировку консоли (что для консольных утилит не хорошо - это вам пользователи утилиты потом расскажут) или перекодировать вводимые/выводимые строки на лету.

    Самый простой вариант решить проблему - писать исходники в cp866, тогда в консоли по умолчанию все будет выводится правильно без всяких танцев с бубном. Но если пользователь поменяет кодировку, то все опять разъедется. Кроме того использовать cp866 для исходников - не комильфо.

    Лучше исходники всегда писать в UTF8 а для строк использовать wchar_t.
    Тут и не только тут эта проблема уже обсуждалась не однократно. Например посмотрите эту ссылку: https://qna.habr.com/answer?answer_id=2278154#comm...
    Не смотрите, что там тема по Си - проблема та же самая и решения для Си и С++ будут похожие.
    Ответ написан
    Комментировать
  • Почему линкер возврашает ошибку при компиляции hello_world?

    @res2001
    Developer, ex-admin
    Использую msys2+mingw. msys2 предоставляет линукс окружение, командную строку и пакетный менеджер. Из командной строки msys2 все собирается без подобных плясок с бубном.
    В пакетном менеджере куча готовых библиотек и разного софта.
    Кроме mingw, можно использовать и clang, а так же и то и другое. Все ставится из пакетного менеджера.
    Если прописать пару путей в PATH и задать 1-2 дополнительных переменных окружения, то все будет доступно из cmd, а так же может быть использовано практически любыми IDE (qtcreator, eclipse, ...)
    Ответ написан
    Комментировать
  • Проблема компилятора?

    @res2001
    Developer, ex-admin
    Поставь MSVC, там компилятор со всем необходимым входит в комплект.
    VSCode - это просто текстовый редактор, весь остальной функционал требует плагинов и другого программного обеспечения, не входящего в состав.
    Ответ написан
    Комментировать
  • Почему MinGW не видит winapi функцию?

    @res2001
    Developer, ex-admin
    С чего вы это взяли что компилятор не видит функцию?
    Если бы это было так, то ошибка была бы что-типа "undefined refference" или "implicit declaration".
    У вас похоже ошибка где-то выше по коду, а в этом месте компилятор просто понял, что тут ошибка.
    Ответ написан
  • Как исправить ошибку PermissionDenied, try_compile?

    @res2001
    Developer, ex-admin
    Похоже cmake не может найти компилятор. Возможно надо в переменную окружения PATH добавить путь до исполняемых файлов mingw и возможно еще создать переменную окружения MINGW_HOME. Тогда cmake должен нормально найти компилятор.

    Лично я не использую mingw и cmake в чистом виде. Использую msys2 с установленным туда с помощью штатного пакетного менеджера и mingw и cmake. В этом случае они отлично дружат.
    Никаких проблем со сборкой именно из-за cmake не было. Можно использовать и из командной строки msys2, можно и из cmd, если добавить пути в PATH и настроить переменные окружения MSYS_HOME и MINGW_HOME.
    Ответ написан
    1 комментарий
  • Qt+MinGW x86: как отладить вылет в release-версии?

    @res2001
    Developer, ex-admin
    Соберите release версию с отладочной информацией, запустите под отладчиком, при вылете отладчик активизируется в месте появления исключительной ситуации, сможете исследовать состояние программы.
    Ответ написан
  • Установка cURL на CodeBlocks на MinGW на Windows?

    @res2001
    Developer, ex-admin
    Установите msys2 - это оболочка для mingw со своим менеджером пакетов.
    Любой имеющийся в репах пакет устанавливается так же как в линуксе - одной командой.
    В msys2 можно установить одновременно и 32 битный и 64 битный mingw, а так же clang.
    mingw установленный в msys2 легко прикручивается к любой IDE.
    Ответ написан
    1 комментарий
  • Установка MinGW ― копирование?

    @res2001
    Developer, ex-admin
    Можно.
    Достаточно на новой системе прописать в переменной окружения PATH путь в каталог bin mingw.
    Дополнительно можно настроить переменные: MINGW_HOME и возможно MINGW_ALT_HOME
    Они должны содержать путь в каталог установки MINGW.
    MINGW_ALT_HOME - не обязательна, можно использовать, если вы держите 2 варианта mingw для сборки х32 и х64 приложений. Один (основной) прописываете в MINGW_HOME другой в MINGW_ALT_HOME.

    Посмотрите что добавляет туда родной установщик, чтоб было понятней.

    Я пользуюсь msys2 + mingw, то же легко переносится. Когда-то это делал. Но сейчас пришел к выводу, что это не имеет большого смысла. Сейчас переношу только домашний каталог пользователя msys2, его можно настроить в любое место в файловой системе.
    Для msys2 дополнительно можно настроить переменную MSYS_HOME, она должна содержать путь в каталог usr msys2.

    Эти переменные окружения используют IDE для нахождения установленных экземпляров mingw. Если собирать из командной строки, то достаточно PATH.
    Ответ написан
    Комментировать
  • Можете посоветовать IDE под C/C++ как CLion (с возможностью подключения MinGW) под 32 бита (x86)?

    @res2001
    Developer, ex-admin
    Eclipse CDT
    Ответ написан
    Комментировать
  • MinGw Windows как работать через консоль?

    @res2001
    Developer, ex-admin
    Напишите makefile - это общепринятая практика компиляции программ.
    Обычно еще процесс компиляции разбивают на компиляцию объектных файлов и линковку их в исполняемый файл. Для этого добавляют опцию -c в компиляцию. Но это не обязательно.
    Дальше можно добавить опции отладки или наоборот оптимизации, -pedantic -Wall и -std=XXX
    В общем gcc --help вам в помощь.
    Ответ написан
    3 комментария
  • Не могу использовать функции из .c файла, хотя она объявлена в .h файле. что делать?

    @res2001
    Developer, ex-admin
    Не нужно в включать gd_filter.c!
    Просто добавьте его к компиляции:
    gcc CPPImageCorrector.cpp gd_filter.c -o CPPImageCorrector.exe -lgd.dll
    Ответ написан
    Комментировать
  • Причина бесконечного вывода несвязанных символов?

    @res2001
    Developer, ex-admin
    Причин много:
    1.В функции addressSearch в цикле ты читаешь в name ввод пользователя в цикле, затем присваиваешь адрес name в массив. Тут ошибка в том, что name у тебя все время одна и та же переменная и весь массив у тебя будет заполнен одним и тем же значением - адресом name. На каждой итерации цикла после ввода, name будет иметь свое значение, но в следующей итерации это значение затрется следующим вводом. Таким образом в address на выходе из функции ты будешь иметь в каждом элементе адрес name, который ссылается на один и тот же объект, содержащий последний ввод пользователя.

    2.В функции addressSearch переменные name и address объявлены как локальные, после выхода из функции этих переменных уже не существует, а ты возвращаешь из функции адрес не существующей переменной. Поэтому и бардак в выводе.
    Ответ написан
    1 комментарий