Что делать если компилятор не работает

Устранение неполадок Microsoft Visual C++ компилятором или линкером Visual C++

В этой статье содержится разрешение устранения неполадок для компиляторов Visual C++ или Visual C++ Linker.

Применяется к: Microsoft Visual C++ 2010 Express, Visual Studio
Исходный номер КБ: 974229

Действие

При расследовании возможной проблемы с компилятором Microsoft Visual C++ или линкером важно получить как можно больше сведений о процессе сборки и используемых параметрах. В этой статье рассмотрены некоторые советы по устранению неполадок, которые помогут решить проблему сборки или получить всестороннюю информацию для службы поддержки Майкрософт.

Решение

Для проблем компилятора, таких как внутренние ошибки компилятора (т. е. C1001), зависает или сбои, может быть полезно захватить выход препроцессора C/C++ для предоставления упрощенного репродуцируемый пример проблемы. В Visual C++ IDE это можно сделать, задав свойство Generate Preprocessed File with Line Numbers (/P) или Without Line Numbers (/EP/P). Это свойство можно найти на страницах свойств проекта в параметрах Configuration Properties, C/C++, Preprocessor.

Этот параметр можно установить на уровне проекта из меню Project Properties, в этом случае оно будет создавать файлы для всех исходных файлов в проекте или его можно установить для одного файла, щелкнув правой кнопкой мыши файл в проводнике решений, выбрав контекстное меню Properties, чтобы привести диалоговое окно свойств для одного .i файла.

Переключатель компилятора /P направляет CL.EXE для захвата вывода препроцессора в файл. Добавление /EP подавляет добавление сведений о номере строки в итоговом файле. /P достаточно, но /EP/P создает меньший файл вывода. Созданный файл вывода препроцессора будет иметь то же имя, что и исходный файл, который компилирован, но с расширением файла a.i, например, file1.cpp создает файл вывода препроцессора file1.i в том же каталоге.

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

Вы можете самостоятельно компилировать файл вывода препроцессора вне контекста Visual Studio проекта. Файл содержит все сведения о файле загона, замене макроса и сведениях директивы компиляторов, необходимых для компиляции этого конкретного или .i .C .CPP исходных файлов. Другими словами, это автономный модуль, который должен иметь возможность воспроизводить проблему компиляции без каких-либо зависимостей от других файлов. В результате файл часто будет большим и содержит большое количество белого пространства.

Проблемы со ссылками

Для проблем со ссылками (ошибки типа LNKxxxxx) можно использовать командный переключатель командной строки /LINKREPRO для создания тестового случая, содержащего только входные данные ссылок без зависимости от исходных файлов. /LINKREPRO использует следующий синтаксис:

‘ это полный путь к пустой папке в локальной файловой системе. Эта папка уже должна существовать — ссылка не создаст ее автоматически и создаст ошибку, если папка не существует.

Этот параметр не подвергается непосредственному воздействию в проектной системе. Чтобы добавить его в сборку, откройте меню свойства проекта из Project меню. В конфигурации Свойства , Linker, Командная строка , в поле Дополнительные параметры изменить, введите переключатель (в том числе вперед слэш) и заменить путь с уже существующей локальной папки /LINKREPRO:

пути. Пример: /LINKREPRO:C:\TEMP\LINKREPRO\ .

Если в этом окне редактирования уже есть другие параметры линкера, разделяйте их запятой.

Кроме того, можно использовать переменную LINK_REPRO среды. Если переменная среды существует, линкатор будет читать выходной путь из переменной среды и LINK_REPRO создавать linkrepro. Переключатель /LINKREPRO не требуется при использовании LINK_REPRO переменной среды. Использование LINK_REPRO переменной среды:

Читайте также:  Почему не работает медиаплеер классик

Откройте командную Visual Studio командную подсказку. Это устанавливается в меню Пуск, в Visual Studio папке под Инструменты Visual Studio подмастерье.

Создайте LINK_REPRO переменную среды, указывающую на существующий и пустой каталог, например: SET LINK_REPRO=C:\TEMP\LINKREPRO\ .

Запустите Visual Studio из той же командной подсказки, чтобы она разделяет копию измененной среды.

Откройте проект и перестроим весь проект.

Когда LINK.EXE вызывается в сборке, она копирует все необходимое для привязки проекта к каталогу linkrepro. Среди скопированные файлы будут ваши объектные файлы (. OBJ), необходимые файлы библиотеки (. LIB), включая библиотеки Майкрософт и файл ответа linker (LINK. RSP), чтобы ССЫЛКА больше не зависела от файла решения.

Чтобы подтвердить, что у вас есть все необходимые файлы для воспроизведения проблемы ссылок, можно запустить LINK в каталоге, указанном переменной LINK_REPRO среды, используя файл ответа linker, созданный linkrepro: LINK @link.rsp .

Перед этим используйте следующую команду, чтобы отключить эту функцию при использовании переменной среды командной строки: SET LINK_REPRO= .

Этот процесс также можно использовать для проверки файлов, участвующих в создании библиотеки, при использовании LIB.EXE link/LIB.

Заявление об отказе от ответственности

Быстрый отказ от публикации

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

Заявление об отказе от ответственности

Корпорация Майкрософт и(или) ее поставщики не делают никаких представлений или гарантий относительно пригодности, надежности или точности сведений, содержащихся в документах и связанных с ними графиках, опубликованных на этом сайте («материалы») для любых целей. Эти материалы могут включать технические неточности или опечатки и могут быть пересмотрены в любое время без уведомления.

В максимальной степени, разрешенной применимым законодательством, Корпорация Майкрософт и/или ее поставщики дисклеймировали и исключали все представления, гарантии и условия, будь то экспресс- или подразумеваемые или нормативные, включая представления, гарантии или условия названия, отсутствие нарушения, удовлетворительное состояние или качество, торговая доступность и пригодность для определенной цели, в отношении материалов.

Источник

Установка Code:Blocks и компилятора MinGW

Здравствуйте, уважаемые читатели! Здесь пойдет речь об установке среды разработки программ на C++ — Code::Blocks. Данная программа бесплатная, но от этого она не становится мало функциональной пустышкой. В ней присутствуют множество функций для разработки небольших программ на C++, а также серьезных проектов. Вместе с ней в комплекте можно скачать компилятор MinGW, который необходим для компиляции ваших программ.

Скачивание необходимых файлов

В начале нам нужно скачать на компьютер файл необходимый для установки Code::Blocks и MinGW. Благо, на официальном сайте Code::Blocks, нам предоставляют возможность скачать и установить оба компонента одним кликом (может двумя). Для скачивания следуем инструкции:

  1. Переходим на официальный сайт данной IDE (http://www.codeblocks.org/downloads).
  2. Здесь у вас есть выбор способа установки, но я вам советую кликнуть по ссылке Download the binary release. Это самый простой способ из присутствующих, о котором дальше и пойдет речь.
  3. На открывшийся странице выберите свою операционною систему или найдите ее самостоятельно, пролистав вручную.
  4. Теперь в таблице с возможными файлами для установки выбираем тот, в названии которого присутствует mingw (например, codeblocks- mingw-setup.exe).
  5. Сохраните файл и дождитесь окончания загрузки. Файл весит не много, так что заскучать не успеете 🙂 .

Установка Code::Blocks

После скачивания установочного файла можем приступать к самой установке программы. Для этого нам потребуется совершить пару телодвижений:

  1. Открываем пакет установки Code::Blocks.
  2. Жмем Next >.
  3. Жмем I Agree.
  4. Здесь мы можем выбрать различные виды установки либо настроить ее самостоятельно. Я предпочитаю Full версию установки. Жмем Next >.
  5. Можете выбрать другой каталог установки Code::Blocks вместо стандартного. Жмем Install.
  6. Ждем…
  7. Жмем Finish!

Теперь у вас установлена полноценная среда разработки Code::Blocks!

Однако на этом еще не все. Остался последний штрих.

При первом запуске у вас попросят указать, какие расширения файлов будут привязаны к Code::Blocks по умолчанию. Здесь особой разницы нет. Я выбираю Yes, associate Code::Blocks with C/C++ file types.

Читайте также:  Worldhost как настроить сервер

Если мы все правильно сделали, то должны увидеть экран приветствия:

Чтобы окончательна удостоверится в работоспособности IDE, давайте запустим тестовою программу.

Для этого жмем File -> New -> File… После чего открывается диалоговое окно:

  1. Выбираем C/C++ source. Жмем Go.
  2. Жмем Next >. Можем поставить галочку Skip this page next time чтобы в следующий раз лишний раз не пролистывать эту страницу.
  3. Выбираем C++ и идем дальше.
  4. Выбираем расположения файла и жмем Finish!

Теперь у вас должно открыться окно для написания кода. Скопируйте или напишите сами данный код:

Источник

Урок №7. Решения самых распространенных проблем

Обновл. 11 Сен 2021 |

На этом уроке мы рассмотрим наиболее частые проблемы, с которыми сталкиваются новички при написании программ на языке C++.

Проблема №1

Как использовать кириллицу в программах C++?

Ответ №1

Чтобы выводить кириллицу в языке C++ нужно подключить заголовочный файл :

И прописать следующие две строки в функции main():

В качестве альтернативного варианта можно использовать следующую строку в функции main():

Проблема №2

При выполнении программы появляется черное консольное окно, а затем сразу пропадает.

Ответ №2

Некоторые компиляторы (например, Bloodshed’s Dev C++) автоматически не задерживают консольное окно после того, как программа завершила свое выполнение. Если проблема в компиляторе, то следующие два шага решат эту проблему:

Шаг №1: Добавьте следующую строку кода в верхнюю часть вашей программы:

Шаг №2: Добавьте следующий код в конец функции main() (прямо перед оператором return):

Таким образом, программа будет ожидать нажатия клавиши, чтобы закрыть консольное окно. Вы получите дополнительное время, чтобы хорошенько всё рассмотреть/изучить. После нажатия любой клавиши, консольное окно закроется.

Другие решения, такие как system(«pause»); , могут работать только на определенных операционных системах, поэтому вариант, приведенный выше, предпочтительнее.

Примечание: Visual Studio не задерживает консольное окно, если выполнение запущено с отладкой ( «Отладка» > «Начать отладку» или F5 ). Если вы хотите, чтобы была пауза — воспользуйтесь решением выше или запустите программу без отладки ( «Отладка» > «Запуск без отладки» или Ctrl+F5 ).

Проблема №3

При использовании cin, cout или endl компилятор говорит, что cin, cout или endl являются «undeclared identifier» (необъявленными идентификаторами).

Ответ №3

Во-первых, убедитесь, что у вас присутствует следующая строка кода в верхней части вашей программы:

Во-вторых, убедитесь, что cin , cout или endl имеют префикс std:: , например:

Проблема №4

При использовании endl для перехода на новую строку, появляется ошибка, что end1 является «undeclared identifier».

Ответ №4

Убедитесь, что вы не перепутали букву l (нижний регистр L ) в endl с цифрой 1 . В endl все символы являются буквами. Также легко можно перепутать заглавную букву О с цифрой 0 (ноль).

Проблема №5

Моя программа компилируется, но работает не так, как нужно. Что мне делать?

Ответ №5

Выполните отладку программы. Детально об этом читайте на уроке №26 и на уроке №27.

Проблема №6

Как включить нумерацию строк в Visual Studio?

Ответ №6

Перейдите в меню «Средства» > «Параметры» :

Затем откройте вкладку «Текстовый редактор» > «Все языки» > «Общие» и поставьте галочку возле «Номера строк» , затем нажмите «ОК» :

Проблема №7

При компиляции программы я получаю следующую ошибку: «unresolved external symbol _main or _WinMain@16».

Ответ №7

Это означает, что ваш компилятор не может найти главную функцию main() . Все программы должны содержать эту функцию.

Здесь есть несколько пунктов, которые нужно проверить:

Есть ли в вашей программе функция main() ?

Слово main написано правильно?

Подключен ли файл, который содержит функцию main() , к вашему проекту? (если нет, то переместите функцию main() в файл, который является частью вашего проекта, либо добавьте этот файл в ваш проект)

Подключен ли файл, содержащий функцию main() , к компиляции?

Проблема №8

При компиляции программы я получаю следующее предупреждение: «Cannot find or open the PDB file».

Ответ №8

Это не ошибка, а предупреждение. На работоспособность вашей программы оно не повлияет. Тем не менее, в Visual Studio вы можете решить всё следующим образом: перейдите в меню «Отладка» > «Параметры» > «Отладка» > «Символы» и поставьте галочку возле «Серверы символов (Майкрософт)» , затем нажмите «ОК» .

Читайте также:  Как настроить воспоминания инстаграмме

Проблема №9

Я использую Code::Blocks или G++, но функционал C++11/C++14 не работает.

Ответ №9

В Code::Blocks перейдите в «Project» > «Build options» > «Compiler settings» > «Compiler flags» и поставьте галочку возле пункта «Have g++ follow C++14 ISO C++ language standard» . Смотрите урок №4 — там есть скриншоты, как это сделать.

При компиляции в g++, добавьте следующий код в командную строку:

Проблема №10

Я запустил программу, появилось консольное окно, но ничего не выводится.

Ответ №10

Ваш антивирус может блокировать выполнение вашей программы. Попробуйте отключить его на время и запустите программу еще раз.

У меня есть другая проблема, с которой я не могу разобраться. Как и где я могу получить ответ?

По мере прохождения данных уроков, у вас, несомненно, появятся вопросы или вы столкнетесь с проблемами. Что делать?

Во-первых, спросите у Google. Четко сформулируйте вашу проблему и просто «погуглите». Если у вас есть сообщение об ошибке — скопируйте его и вставьте в поиск Google, используя кавычки. Скорее всего, кто-то уже задавал такой же вопрос, как у вас, и получил на него ответ.

Если Google не помог, то спросите на специализированных сервисах вопросов/ответов, либо на форумах, посвященным тематике программирования/IT. Вот самые популярные из них:

Но будьте внимательны и старайтесь максимально конкретизировать свою проблему, укажите, какую операционную систему и IDE вы используете, а также то, что вы пробовали сделать самостоятельно для решения своей проблемы.

Поделиться в социальных сетях:

Урок №6. Режимы конфигурации «Debug» и «Release»

Комментариев: 43

Добавлю для тех кто на линуксе.
Путь проекта должен быть полностью на английском, а то будет выдавать блок будет ошибку выдавать при компиляции и дебаге: no input file.

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

Если у вас при компиляции программы выскакивает на экране предупреждение по типу:

(Я приучиваюсь к английскому интерфейсу, поэтому, собственно, пример сообщения тоже приведу на нём:)
Some Unicode characters in this file could not be saved int the current codepage. Do you want to resave this file as Unicose in order to maintain your data?

И варианты ответа:
Да(В первый раз я бездумно клацнул эту кнопку. Оказалось зря — посыпались ошибки);
Нет;
Сохранить с другой кодировкой;
Отмена.

Итак, что нужно делать:
Нажимаем на ‘Сохранить с другой кодировкой / Save with another encoding’;
Под словом, соответственно, ‘Кодировка: / Encoding: ‘ кликаем на скролл бар, и нам открывается обширный набор кодировок;
Совсем чуть-чуть промотав, находим Cyrillic (Windows) -Codepage 1251 и выбираем его.
Кликаем ОК, и, затаив дыхание, следим за окошком вывода;)

Присоединяюсь к вопросу о возможности ввода-вывода китайских иероглифов с использованием ввода стандартного языка в пакете Windows. Все, что лежит на поверхности на форумах (типа setlocale(chinese_simplified) с различными аббревиатурами аргумента и предлагаемыми инклудами уже испробовано. IDE Dev++. Не писать же их через кодировку в unicode

к первому вопросу.
нужно что б юникод редактора совпадал с юникодом винды.
по стандарту он UTF-8 должен быть. его нужно поменять в проге в какой вы пишите код и затем в винде.

1.Нажмите Пуск, затем Панель управления
2.Нажмите Часы, язык и регион
3.В Windows 10, Windows 8: нажмите Регион
В Windows 7: нажмите Язык и региональные стандарты
В Windows XP: нажмите Язык и региональные стандарты
4.Открывается диалоговое окно «Язык и региональные стандарты».
5.Нажмите на вкладку Администрирование
В Windows XP нажмите на вкладку Дополнительно
Если такой вкладки нет, то вход выполнен не с полномочиями
администратора.
6.Под строкой «Язык программ, не поддерживающих Юникод» нажмите Изменить язык системы и выберите нужный язык.
Нажмите ОК
Перезапустите компьютер, чтобы изменения вступили в силу

у меня сработало.

И у меня сработало! Благодарю! С Новым Годом и Рождеством!

Источник

Оцените статью