Форум программистов, компьютерный форум CyberForum.ru

Не компилится даже "HelloWorld" -_- - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.85
M@ZAX@KEP
 Аватар для M@ZAX@KEP
3 / 3 / 0
Регистрация: 03.10.2010
Сообщений: 8
15.10.2010, 15:37     Не компилится даже "HelloWorld" -_- #1
Пожалуйста, поставьте мне диагноз...
Создаю пустой проект qwerty в Visual Studio, добавляю единственный файл - qwerty.cpp Программа для дегенератов "Hello World"...
C++
1
2
3
4
5
6
7
8
#include <iostream>
 
int main(){
    int i(0);
    std::cout << "Hello, world! =)\n";
    std::cin >> i;
    return 0;
}
Запускается только на тачке с Visual Studio. В другой ОС (на том же металле) откомпиленная прога страстно жаждет DLL-ку MSVCP100.dll
Потом в свойствах проекта выбрал "Использовать MFC в статической библиотеке" (было "в общей библиотеке windows"), как писали тут и меня послало на
1>------ Построение начато: проект: qwerty, Конфигурация: Release Win32 ------
1>Построение начато 05.10.2010 18:14:16.
1>InitializeBuildStatus:
1> Создание "Release\qwerty.unsuccessfulbuild", так как было задано "AlwaysCreate".
1>ClCompile:
1> Для всех выходных данных обновления не требуется.
1> qwerty.cpp
1>LIBCMT.lib(wwincrt0.obj) : error LNK2001: неразрешенный внешний символ "_wWinMain@16"
1>C:\Documents and Settings\MX\мои документы\visual studio 2010\Projects\Study\Release\qwerty.exe : fatal error LNK1120: 1 неразрешенных внешних элементов
1>
1>СБОЙ построения.
1>
1>Затраченное время: 00:00:02.64
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
Откопал этот файл (LIBCMT.lib) поиском где-то в папке с Visual Studio, копирнул его в папку проекта (+ в папку решения\Release, где создаётся exe_шник) - не помогло.
\me в панике xD

ЗЫ Зря Айвор Хортон в своей толстенной книженции ничего не написал про компиляцю и сопровождение программы))
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.10.2010, 15:37     Не компилится даже "HelloWorld" -_-
Посмотрите здесь:

C++ Ошибка Необработанное исключение в "0x001d18f8" в "lr7v2.exe": 0xC0000005: Нарушение прав доступа при чтении "0xcdcdcde9"
C++ Необработанное исключение в "0x54a2d2e9 (msvcr100d.dll)" в "3.exe": 0xC0000005: Нарушение прав доступа при записи "0xcccccccc".
Необработанное исключение в "0x1027c9c7 (msvcr100d.dll)" в "gh.exe": 0xC0000005: Нарушение прав доступа при чтении "0xfeeefeee". C++
Программа, которая считывает текст из файла и выводит его на экран, заменив цифры от 0 до 9 на слова "ноль", "один",..."девять" C++
Вывести текст файла, заменив цифры от 0 до 9 на слова "ноль", "один"."девять", начиная каждое предложение с новой строки C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
15.10.2010, 15:53     Не компилится даже "HelloWorld" -_- #2
Цитата Сообщение от M@ZAX@KEP Посмотреть сообщение
Запускается только на тачке с Visual Studio
Вы же написали что програма не компилитсо,как тогда она запускаетсо ?
Manjak
 Аватар для Manjak
269 / 175 / 7
Регистрация: 12.03.2010
Сообщений: 494
15.10.2010, 16:49     Не компилится даже "HelloWorld" -_- #3
Не
C++
1
int i(0);
, а
C++
1
int i = 0;
Так конструктор для типа инт лучше не пытаться вызвать.
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
15.10.2010, 17:59     Не компилится даже "HelloWorld" -_- #4
Manjak, это же концептуально одно и то же
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
15.10.2010, 17:59     Не компилится даже "HelloWorld" -_- #5
Manjak, какой конструктор для простого типа? Это простая инициализация
Manjak
 Аватар для Manjak
269 / 175 / 7
Регистрация: 12.03.2010
Сообщений: 494
15.10.2010, 18:05     Не компилится даже "HelloWorld" -_- #6
Цитата Сообщение от M128K145 Посмотреть сообщение
Manjak, какой конструктор для простого типа? Это простая инициализация
Стандарт почитай.

По задумке одно и то же, но компилятор имеет привычку такие выражения с интом воспринимать как обьявление функции.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9372 / 5422 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
15.10.2010, 18:10     Не компилится даже "HelloWorld" -_- #7
Manjak, прекрасно оно так работает!
C++
1
2
3
4
5
6
7
#include <iostream>
 
int main(){
    int i(13);
    std::cout << i << std::endl;
    return 0;
}
M@ZAX@KEP, попробуйте первой же строкой
C++
1
#include "stdafx.h"
написать
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
15.10.2010, 18:11     Не компилится даже "HelloWorld" -_- #8
Manjak, какой компилятор? И линк на подобную запись в стандарте
Manjak
 Аватар для Manjak
269 / 175 / 7
Регистрация: 12.03.2010
Сообщений: 494
15.10.2010, 18:37     Не компилится даже "HelloWorld" -_- #9
Пункт 8.5.5, дефолтная инициализация стандартных типов.
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
15.10.2010, 18:54     Не компилится даже "HelloWorld" -_- #10
Manjak, ссылку на источник? Можно в ЛС
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
15.10.2010, 20:40     Не компилится даже "HelloWorld" -_- #11
Цитата Сообщение от easybudda Посмотреть сообщение
C++
1
int i(13);
Ого,даже не знал что в влюсах можно так инициализировать переменные.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
15.10.2010, 21:09     Не компилится даже "HelloWorld" -_- #12
Asics^, Ну собственно по-моему это аналогично по сути.

C++
1
2
3
4
5
6
int main()
{
    int* a;
    a=new int(5);
    return 0;
}
После выделения идет инициализация int-а.

Manjak, Если это есть плохо, то почему?

C++
1
2
3
4
    void resize(size_type _Newsize)
        {   // determine new length, padding with _Ty() elements as needed
        resize(_Newsize, _Ty());
        }
Из реализации вектора в MSVS
Manjak
 Аватар для Manjak
269 / 175 / 7
Регистрация: 12.03.2010
Сообщений: 494
15.10.2010, 21:17     Не компилится даже "HelloWorld" -_- #13
Потому что дефолтная инициализация предусмотрена для всех без исключения типов. И эта функия соотвествует всем правилам стандарта.
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
15.10.2010, 21:21     Не компилится даже "HelloWorld" -_- #14
Manjak, вот цитата
— if T is a non-POD class type (clause 9), the default constructor for T is called (and the initialization is
ill-formed if T has no accessible default constructor);
— if T is an array type, each element is default-initialized;
— otherwise, the storage for the object is zero-initialized.
Код
C++
1
int variable(10);
Проверяем по пунктам:
- если T не POD(plain old data type - простой тип данных), то вызывается конструктор по умолчанию. Тип int как раз относится к POD. Не подходит.
- если T массив, этим значением инициализируется первый элемент массива, остальные - значением по умолчанию для данного типа. У нас не массив - не подходит.
- в других случаях происходит простая инициализация этим значением, о чем я и сказал в пятом посте.

В чем я не прав?
Manjak
 Аватар для Manjak
269 / 175 / 7
Регистрация: 12.03.2010
Сообщений: 494
15.10.2010, 21:34     Не компилится даже "HelloWorld" -_- #15
Кхе-кхе последний пункт "слегка" не так переводится А про инициализацию с помощью () немного не в том разделе написано
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
15.10.2010, 22:11     Не компилится даже "HelloWorld" -_- #16
Это? 8.5.5

5 To zero-initialize storage for an object of type T means:

--if T is a scalar type (_basic.types_), the storage is set to the
value of 0 (zero) converted to T;

--if T is a non-union class type, the storage for each nonstatic data
member and each base-class subobject is zero-initialized;

--if T is a union type, the storage for its first data member5) is
zero-initialized;

--if T is an array type, the storage for each element is zero-initial-
ized;

--if T is a reference type, no initialization is performed.

To default-initialize an object of type T means:

--if T is a non-POD class type (_class_), the default constructor for
T is called (and the initialization is ill-formed if T has no acces-
sible default constructor);

--if T is an array type, each element is default-initialized;

--otherwise, the storage for the object is zero-initialized.

A program that calls for default-initialization of an entity of refer-
ence type is ill-formed. If T is a cv-qualified type, the cv-unquali-
fied version of T is used for these definitions of zero-initialization
and default-initialization.
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
15.10.2010, 22:16     Не компилится даже "HelloWorld" -_- #17
Цитата Сообщение от Manjak Посмотреть сообщение
последний пункт "слегка" не так переводится
Я не переводил дословно, ключевое слово "otherwise" и отсутствие слова "constructor".

Цитата Сообщение от Manjak Посмотреть сообщение
А про инициализацию с помощью () немного не в том разделе написано
Ваши слова:
Цитата Сообщение от Manjak Посмотреть сообщение
Пункт 8.5.5, дефолтная инициализация стандартных типов
Цитата из этого пункта, страница 142


Для простых типов, к которым и относится int, слово "constructor" ни разу не применялось в пункте 8.5
M@ZAX@KEP
 Аватар для M@ZAX@KEP
3 / 3 / 0
Регистрация: 03.10.2010
Сообщений: 8
16.10.2010, 10:59  [ТС]     Не компилится даже "HelloWorld" -_- #18
Вы же написали что програма не компилитсо,как тогда она запускаетсо ?
Со стандартными свойствами проекта запускается и компилится, но на других компах, как я уже написал:
В другой ОС (на том же металле) откомпиленная прога страстно жаждет DLL-ку MSVCP100.dll
А перестаёт компилится после установки в свойствах "Использовать MFC в статической библиотеке"

easybudda, да, я тоже думал что это из-за подключения заголовочного файла... но ведь не буду же я всё кодить сам без этих файлов? xD В любом случае они должны работать. Кстати, у меня же пустой проект, там нет этого stdafx.h))

Не по теме:

ЗЫ Manjak и M128K145, вы о чём вообще? Я лишь спросил, как решить ошибку при компиляции, вы же развернули дискуссию о стандартах языка и различиях в способах инициализации переменных... вы прикалываетесь что ли или к чему это всё тут? Спасибо за оффтоп.

easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9372 / 5422 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
16.10.2010, 13:05     Не компилится даже "HelloWorld" -_- #19
Цитата Сообщение от M@ZAX@KEP Посмотреть сообщение
Кстати, у меня же пустой проект, там нет этого stdafx.h
действительно странно... сделал всё то же самое и вот:
Не компилится даже "HelloWorld" -_-

тогда попробуйте избавиться от русских букв в пути к проекту, то есть из папки "мои документы" его в корень куда-нибудь вытащите - кому-то вроде помогало...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.10.2010, 13:15     Не компилится даже "HelloWorld" -_-
Еще ссылки по теме:

C++ Необработанное исключение в "0x76f015de" в "контрольная 1 задача 2.exe": 0xC0000005: Нарушение прав доступа при чтении "0x334e2c64"
Необработанное исключение в "0x0fc1d484 (msvcr100d.dll)" в "1.exe": 0xC0000005: Нарушение прав доступа при чтении "0x00aee0af" C++
Visual Studio не читает операторы, что начинаются на "glu" ("gluBuild2DMipmaps", "gluPerspective") C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
16.10.2010, 13:15     Не компилится даже "HelloWorld" -_- #20
Цитата Сообщение от M@ZAX@KEP Посмотреть сообщение
LIBCMT.lib(wwincrt0.obj) : error LNK2001: неразрешенный внешний символ "_wWinMain@16"
1>C:\Documents and Settings\MX\мои документы\visual studio 2010\Projects\Study\Release\qwerty.exe : fatal error LNK1120: 1 неразрешенных внешних элементов
Может тип проекта неправильно выбран? Нужно выбирать не Win32 Application, а Console Application

Цитата Сообщение от easybudda Посмотреть сообщение
тогда попробуйте избавиться от русских букв в пути к проекту, то есть из папки "мои документы" его в корень куда-нибудь вытащите - кому-то вроде помогало...
Да вроде студия нормально понимает русские буквы в пути... По крайней мере у меня таких проблем нет
Yandex
Объявления
16.10.2010, 13:15     Не компилится даже "HelloWorld" -_-
Ответ Создать тему
Опции темы

Текущее время: 22:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru