3 / 3 / 0
Регистрация: 03.10.2010
Сообщений: 8
1

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

15.10.2010, 15:37. Показов 3670. Ответов 26
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Пожалуйста, поставьте мне диагноз...
Создаю пустой проект 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

ЗЫ Зря Айвор Хортон в своей толстенной книженции ничего не написал про компиляцю и сопровождение программы))
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.10.2010, 15:37
Ответы с готовыми решениями:

HelloWorld не работает: Exception in thread 'main' java.lang.NoClassDefFoundError: HelloWorld.
Что за ерунда - не пойму. Установил последний NetBeans и JDK 1.3.1 Взял самый простой пример...

Behavior не компилится, не хватает конструктора. Объявляю, не компилится. Не пойму
В общем, такой вот код, но не компилируется. Что не так? Чёт не пойму вообще. /// &lt;summary&gt; ...

Не вся ОЗУ видна х32 даже 4 ГБ видно 2.7 Даже не 3-3,2
Я поискал в гугле и понял что х32 битная система не видит все 4 ГБ из установленных 4гб но на...

HelloWorld
import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener;...

Helloworld
Только начал учить Qt. Скачал книгу Шлее по Qt 4.8, но на компьютере стоит Qt 5.2.1. и на этапе...

26
Freelance
Эксперт С++
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
15.10.2010, 15:53 2
Цитата Сообщение от M@ZAX@KEP Посмотреть сообщение
Запускается только на тачке с Visual Studio
Вы же написали что програма не компилитсо,как тогда она запускаетсо ?
1
270 / 176 / 46
Регистрация: 12.03.2010
Сообщений: 494
15.10.2010, 16:49 3
Не
C++
1
int i(0);
, а
C++
1
int i = 0;
Так конструктор для типа инт лучше не пытаться вызвать.
0
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
15.10.2010, 17:59 4
Manjak, это же концептуально одно и то же
0
Эксперт JavaЭксперт С++
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
15.10.2010, 17:59 5
Manjak, какой конструктор для простого типа? Это простая инициализация
0
270 / 176 / 46
Регистрация: 12.03.2010
Сообщений: 494
15.10.2010, 18:05 6
Цитата Сообщение от M128K145 Посмотреть сообщение
Manjak, какой конструктор для простого типа? Это простая инициализация
Стандарт почитай.

По задумке одно и то же, но компилятор имеет привычку такие выражения с интом воспринимать как обьявление функции.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12453 / 7478 / 1752
Регистрация: 25.07.2009
Сообщений: 13,748
15.10.2010, 18:10 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"
написать
1
Эксперт JavaЭксперт С++
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
15.10.2010, 18:11 8
Manjak, какой компилятор? И линк на подобную запись в стандарте
0
270 / 176 / 46
Регистрация: 12.03.2010
Сообщений: 494
15.10.2010, 18:37 9
Пункт 8.5.5, дефолтная инициализация стандартных типов.
0
Эксперт JavaЭксперт С++
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
15.10.2010, 18:54 10
Manjak, ссылку на источник? Можно в ЛС
0
Freelance
Эксперт С++
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
15.10.2010, 20:40 11
Цитата Сообщение от easybudda Посмотреть сообщение
C++
1
int i(13);
Ого,даже не знал что в влюсах можно так инициализировать переменные.
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
15.10.2010, 21:09 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
0
270 / 176 / 46
Регистрация: 12.03.2010
Сообщений: 494
15.10.2010, 21:17 13
Потому что дефолтная инициализация предусмотрена для всех без исключения типов. И эта функия соотвествует всем правилам стандарта.
1
Эксперт JavaЭксперт С++
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
15.10.2010, 21:21 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 массив, этим значением инициализируется первый элемент массива, остальные - значением по умолчанию для данного типа. У нас не массив - не подходит.
- в других случаях происходит простая инициализация этим значением, о чем я и сказал в пятом посте.

В чем я не прав?
0
270 / 176 / 46
Регистрация: 12.03.2010
Сообщений: 494
15.10.2010, 21:34 15
Кхе-кхе последний пункт "слегка" не так переводится А про инициализацию с помощью () немного не в том разделе написано
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
15.10.2010, 22:11 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.
0
Эксперт JavaЭксперт С++
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
15.10.2010, 22:16 17
Цитата Сообщение от Manjak Посмотреть сообщение
последний пункт "слегка" не так переводится
Я не переводил дословно, ключевое слово "otherwise" и отсутствие слова "constructor".

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


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

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

Не по теме:

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

0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12453 / 7478 / 1752
Регистрация: 25.07.2009
Сообщений: 13,748
16.10.2010, 13:05 19
Цитата Сообщение от M@ZAX@KEP Посмотреть сообщение
Кстати, у меня же пустой проект, там нет этого stdafx.h
действительно странно... сделал всё то же самое и вот:
Не компилится даже "HelloWorld" -_-


тогда попробуйте избавиться от русских букв в пути к проекту, то есть из папки "мои документы" его в корень куда-нибудь вытащите - кому-то вроде помогало...
1
Эксперт С++
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
16.10.2010, 13:15 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 Посмотреть сообщение
тогда попробуйте избавиться от русских букв в пути к проекту, то есть из папки "мои документы" его в корень куда-нибудь вытащите - кому-то вроде помогало...
Да вроде студия нормально понимает русские буквы в пути... По крайней мере у меня таких проблем нет
1
16.10.2010, 13:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.10.2010, 13:15
Помогаю со студенческими работами здесь

HelloWorld
Решил начать изучать ассемблер. Как и все написал первую программу. Поскольку у меня windows 8 64...

HelloWorld
Пишу HelloWorld по мануалу, который немного расходится со средой разработки Flash CS5 Не могу...

HelloWorld
Решил освоить С++. Но первый же пример из книги Харви М. Дейтел, Пол Дж. Дейтел &quot;Как...

Helloworld
Ну не скажите. Я тоже оказался в ситуации автора вопроса. Самый первый пример и сразу ошибка....

HelloWorld!
Здравствуйте. Помогите пожалуйста с началом обучения. Установил jdk-6u21-windows-i586. В текстовом...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru