Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: На что ругается компилятор?  (Прочитано 37015 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Terabaytus
Интересующийся

ru
Offline Offline
Пол: Мужской
Через терни к звездам.


« : 23-08-2013 06:22 » 

Добрый день, начал работать в visual studio 2010, при запуске простейшей программы


#include "stdafx.h"
#include <iostream>
using namespace std;

int main ()
{
cout << " С++ " ;
return 0;
}

компилятор начинает ругаться:
1>------ Построение начато: проект: Простые числа 2, Конфигурация: Debug Win32 ------
1>  Простые числа 2.cpp
1>LINK : fatal error LNK1123: сбой при преобразовании в COFF: файл недопустим или поврежден
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========

Убираю из заголовка: #include <iostream>
Выдает вот это :
1>------ Построение начато: проект: Простые числа 2, Конфигурация: Debug Win32 ------
1>  Простые числа 2.cpp
1>c:\users\user\documents\visual studio 2010\projects\простые числа 2\простые числа 2\простые числа 2.cpp(10): error C2065: cout: необъявленный идентификатор
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========


Убираю из заголовка: #include "stdafx.h"
 Выдает вот это :
1>------ Построение начато: проект: Простые числа 2, Конфигурация: Debug Win32 ------
1>  Простые числа 2.cpp
1>LINK : fatal error LNK1123: сбой при преобразовании в COFF: файл недопустим или поврежден
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========

 В чем может быть дело, как исправить?
« Последнее редактирование: 23-08-2013 07:21 от Джон » Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #1 : 23-08-2013 07:22 » 

Проект прицепи к сообщению, или распиши подробно как создавал.

зы А проблем с юникодом не может быть?
« Последнее редактирование: 23-08-2013 07:27 от Джон » Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Terabaytus
Интересующийся

ru
Offline Offline
Пол: Мужской
Через терни к звездам.


« Ответ #2 : 23-08-2013 07:42 » 

Вот сам проект.

* Простые числа 2.cpp (0.19 Кб - загружено 1051 раз.)
« Последнее редактирование: 23-08-2013 07:44 от Terabaytus » Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #3 : 23-08-2013 08:40 » 

Не, ты не понял. КОД ты уже показал, и там действительно ничего страшного. 12-я студия компилирует его "на ура". Поэтому я предполагаю, что проблема в настройках проекта и попросил ПРОЕКТ.

зы а Cтудия у тебя откуда? Ага
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Terabaytus
Интересующийся

ru
Offline Offline
Пол: Мужской
Через терни к звездам.


« Ответ #4 : 23-08-2013 09:26 » 

Студия чистокровная, скачанная с сайта макрософага).
Само создание проекта происходило так,  выбор из установленных шаблонов я выбрал CRL далее ввел имя проекта нажал ОК появился стандартный заголовок созданный программой только  код немного другой и выводит "Здравствуй мир", но самое интересное он тоже выдавал ошибки. Далее тоже самое пробовал с шаблоном Win 32 так там оператор cout сразу был подчеркнут как не опознанный.
« Последнее редактирование: 23-08-2013 09:28 от Terabaytus » Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #5 : 23-08-2013 09:54 » 

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

1. Что есть CRL? Что есть .NET? (я это знаю, просто хочу понять, знаешь ли ты) Почему ты вначале выбрал этот тип проекта?

2. Win 32 Console Application?

Почему cout подчёркнут, с этим можно разобраться. Но сначала надо решить, что же ты всё-таки хочешь. У тебя какая цель?
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Terabaytus
Интересующийся

ru
Offline Offline
Пол: Мужской
Через терни к звездам.


« Ответ #6 : 23-08-2013 10:22 » 

1. Что есть CRL? Что есть .NET? (я это знаю, просто хочу понять, знаешь ли ты) Нет для меня это пока что только разные слова.

Почему ты вначале выбрал этот тип проекта?  Так как на нем написано, что это консольное приложение.

2. Win 32 Console Application? Да он самый.

Моя цель вывести на экран консоли текст. А если глобально то освоить С++)
« Последнее редактирование: 23-08-2013 10:24 от Terabaytus » Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #7 : 23-08-2013 12:03 » 

ОК, теперь всё понятно. Тема переносится в соответствующий раздел.

Значит так. В силу:
освоить С++)

с этого самого момента тебя интересует ТОЛЬКО проект типа Win 32 Console Application. Всё остальное пока забудь.

Немного отвлекусь. ИМХО VisualStudio не самая удачная платформа для освоения С++. В МС версии языка куча всяких добавок для работы с Win API. А самое главное, он тормозит (не в плане скорости, а в плане актуальности) по сравнению с развитием стандарта. Например, в студии версии 2012 только частично имплементированы фичи C++ версии 11. В студии 2013 (анонсирована на осень этого года), уже больше фич С++11, но опять же не все...
Хотя тебя, как начинающего, новые фичи 11-ой версии языка пока и должны мало интересовать, но в будущем ты будешь "тормозить" вместе со студией. Я сам, волею судеб, работаю только на ней (VS 2012), и невозможность пользоваться некоторыми вкусностями стандарта очень сильно раздражет.

Ну, подумай на досуге. А пока начнём. Итак, проект типа Win 32 Console Application ты создал с примерно такими настройками:



если нет, то исправляй (это в 2012-ой, просто 2010-ой ща под рукой нет).
C оригинальным кодом должно выглядеть примерно так:
Код: (C++)
#include "stdafx.h"


int _tmain(int argc, _TCHAR* argv[])
{
        return 0;
}

Компилируем, выполняем... всё ок?

Идем дальше: пытаемся вывести текст "С++" в консоль, используя станадартный поток вывода cout.

действительно, в нашей программе слово cout неизвестно, поэтому необходимо добавить заголовочный файл
#include <iostream>

Но и это ещё не всё. Представь, что "слово" cout может ещё где-то использоваться для совсем других целей. Для придания "индивидуальности" в таких случаях, В С++ предусмотрено пространство имён - namespace. В данном случе cout находится в пространстве имён, которое называтся std

Прямое указание пространства имён осуществляется с помощью оператора области видимости (scope operator) ::. Окончательный код выглядит примерно так:

Код: (C++)
#include "stdafx.h"

#include <iostream>

int _tmain(int argc, _TCHAR* argv[])
{
        std::cout << "C++";

        return 0;
}

Компилируем, выполняем всё Ок?

Часто, кроме пространства имён std, никакие другие не используются, тогда можно объявить это сразу using namespace std; и экономить std::

Код: (C++)
#include "stdafx.h"

#include <iostream>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{

        cout << "C++";

        return 0;
}

* ss1.gif (16.93 Кб - загружено 9288 раз.)
« Последнее редактирование: 23-08-2013 12:08 от Джон » Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Terabaytus
Интересующийся

ru
Offline Offline
Пол: Мужской
Через терни к звездам.


« Ответ #8 : 23-08-2013 13:19 » 

Проект создан, в Win 32 согласно рекомендациям
Вот код
#include "stdafx.h"

#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
        std::cout << "C++";

        return 0;
}
Вот результат
1>------ Построение начато: проект: 3, Конфигурация: Debug Win32 ------
1>  3.cpp
1>LINK : fatal error LNK1123: сбой при преобразовании в COFF: файл недопустим или поврежден
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
Может следует снести студию ? А подойдет ли QT как для начинающего?
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #9 : 23-08-2013 15:05 » 

Как насчёт шага 1?

Просто

Код: (C++)
#include "stdafx.h"

int _tmain(int argc, _TCHAR* argv[])
{
        return 0;
}

компилировать можешь?

Если нет, то скорей всего проблемы со студией. Поэтому я вначале и спросил "откуда?". Такое обычно бывает с крякнутыми, ворованными "подделками".
Попробуй её переустановить. Да, ещё вопрос, винда какая?

Для начинающего в принципе подойдёт любой компилятор. Но ты же не собираешься оставаться всё время начинающим. Ага
Насчёт Qt ща спецы подтянутся, расскажут. Я с ним не работаю, но многие хвалят.

Добавлено через 24 минуты и 47 секунд:
А! Всё проще!!! Установи SP1 для студии.
http://stackoverflow.com/questions/10888391/error-link-fatal-error-lnk1123-failure-during-conversion-to-coff-file-inval

А ещё лучше 2012 студию с последними апдейтами.
« Последнее редактирование: 23-08-2013 15:32 от Джон » Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #10 : 24-08-2013 04:30 » 

Terabaytus, Начинать надо с консоли, Qt  это библиотека и довольно здоровая. Без понимания классов туда лучше не суваться. А еще лучше вначале также изучить STL, Позволит мегьше делать велосипедов.
В твоем варианте сейчас виновата студия. Ошибка происходит на этапе линковки. Насколько я помню, если скачивать бесплатный вариант студии. То для полной работы в С++ нужно доустанавливать еше пакеты (Так было с 2005 студией. Если я правильно помню SDK).

Ну или воспользоваться альтернативными вариантами компиляторов. Например MinGW (порт GCC в Windows).
« Последнее редактирование: 24-08-2013 04:41 от Finch » Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Terabaytus
Интересующийся

ru
Offline Offline
Пол: Мужской
Через терни к звездам.


« Ответ #11 : 26-08-2013 07:16 » 

Господа, спасибо за советы по ходу и правда дело в Винде у меня 7, а проверял на XP все шло. 
Записан
gob842
Новенький

ru
Offline Offline

« Ответ #12 : 30-01-2014 13:30 » new

Попробуй зайти в свойства проекта, раскрой свойства конфигурации и выдели компоновщик, там будет пункт "Включить инкрементальную компоновку", выключи её "Нет (/INCREMENTAL:NO)", должно всё заработать.
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #13 : 30-01-2014 14:20 » 

Я галку empty project ставлю, а галку precompiled headers снимаю. После чего уже никакие особенности MS не важны. И обычный main оно понимает. И даже Unicode по умолчанию включен в последних студиях.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
login
Новенький

ru
Offline Offline

« Ответ #14 : 09-08-2014 14:48 » 

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

* Безымянный.jpg (281.92 Кб - загружено 1171 раз.)
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines