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

Ошибка: неразрешенный внешний символ "_mainCRTStartup" - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 43, средняя оценка - 4.72
SpartakusMd
 Аватар для SpartakusMd
21 / 21 / 2
Регистрация: 29.03.2010
Сообщений: 172
29.01.2011, 21:23     Ошибка: неразрешенный внешний символ "_mainCRTStartup" #1
Здраствуйте.
При отладке кода в MS VS 2010 выдаёт ошибку, но в онлайн компилятор всё работает. Ошибка:
LINK : error LNK2001: неразрешенный внешний символ "_mainCRTStartup"
... : fatal error LNK1120: 1 неразрешенных внешних элементов

После кода есть полный вывод.

Вот страница на ideone.com.
Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#include <iostream>
#include <cstdlib>
#include <stdexcept>
#include <sstream>
#include <iomanip>
 
/**
* Convert the string received as paramater to a number (of type T)
* @param user_input The string to be converted
* @return The converted number
* @throw std::invalid_argument if the conversion couldn't be done
*/
template <typename T>
T string_to_number(const std::string& user_input) throw (std::invalid_argument)
{
   T user_number;
   std::stringstream user_stream(user_input);
   if (user_stream >> user_number)
      return user_number;
   else
      throw(std::invalid_argument(user_input));
}
 
/**
* Populate a square array with elements of type T
* @param arr The array to be populated
* @param dim The dimension or the array (number of lines equals number of columns)
*/
template <typename T>
void populate_array(T* arr, size_t dim) throw (std::invalid_argument)
{
   std::string user_input;
   
   for (size_t i = 0; i < dim; i++)
   {
      for (size_t j = 0; j < dim; j++)
      {
         std::cout << "arr[" << i << "]" << "[" << j << "]" << " = ";
         std::cin >> user_input;
         arr[i + dim * j] = string_to_number<T>(user_input);
      }
   }
}
 
/**
* Display the contents of a square array holding elements of type T
* @param arr The array to be populated
* @param dim The dimension or the array (number of lines equals number of columns)
*/
template <typename T>
void display_array(const T* arr, size_t dim)
{
   for (size_t i = 0; i < dim; i++)
   {
      for (size_t j = 0; j < dim; j++)
      {
         std::cout << std::setw(10) << arr[i + dim * j] << " ";
      }
      std::cout << std::endl;
   }
}
 
/**
* Calculate the sum of the elements on the principa diagonal
* @param arr The array to be populated
* @param dim The dimension or the array (number of lines equals number of columns)
* @return The sum of the elements on the principal diagonal
*/
template <typename T>
T principal_diag_sum(const T* arr, size_t dim)
{
   T sum = 0;
   for (size_t i = 0; i < dim; i++)
      sum += arr[i + dim * i];
   return sum;
}
 
/**
* Calculate the sum of the elements on the secondary diagonal
* @param arr The array to be populated
* @param dim The dimension or the array (number of lines equals number of columns)
* @return The sum of the elements on the secondary diagonal
*/
template <typename T>
T secondary_diag_sum(const T* arr, size_t dim)
{
   T sum = 0;
   for (size_t i = 0; i < dim; i++)
      sum += arr[i + dim * (dim - 1 - i)];
   return sum;
}
 
int main()
{
   int* arr = 0;
   size_t dim;
   std::string user_input;
   std::cout << "Enter the matrix dimension:  ";
   std::cin >> user_input;
   
   try
   {
      dim = string_to_number<int>(user_input);
      arr = new int[dim * dim];
      std::cout << "Enter the array elements" << std::endl;
      
      populate_array<int>(arr, dim);
      display_array<int>(arr, dim);
      
      std::cout << "Sum of elements on the first diagonal is: " << principal_diag_sum<int>(arr, dim) << std::endl;
      std::cout << "Sum of elements on the secondary diagonal is: " << secondary_diag_sum<int>(arr, dim) << std::endl;
   }
   catch(std::invalid_argument& ex)
   {
      std::cout << "Invalid number or outside range: " << ex.what() << std::endl;
      if (arr)
         delete [] arr;
      return EXIT_FAILURE;
   }
   catch(std::bad_alloc& ex)
   {
      std::cerr << "Memory allocation error: " << ex.what() << std::endl;
      return EXIT_FAILURE;
   }
   delete [] arr;
   return EXIT_SUCCESS;
}
Вот вывод:
------ Построение начато: проект: Matrice, Конфигурация: Debug Win32 ------
Построение начато 29.01.2011 19:40:36.
InitializeBuildStatus:
Обращение к "Debug\Matrice.unsuccessfulbuild".
ManifestResourceCompile:
Для всех выходных данных обновления не требуется.
LINK : error LNK2001: неразрешенный внешний символ "_mainCRTStartup"
c:\documents and settings\admin\мои документы\visual studio 2010\Projects\Matrice\Debug\Matrice.exe : fatal error LNK1120: 1 неразрешенных внешних элементов

СБОЙ построения.

Затраченное время: 00:00:01.29
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.01.2011, 21:23     Ошибка: неразрешенный внешний символ "_mainCRTStartup"
Посмотрите здесь:

Подскажите почему может появляться ошибка: "неразрешенный внешний символ "_SDL_..."" C++
Странная ошибка - "ссылка на неразрешенный внешний символ" C++
Циклы с выключателем и ошибка "ссылка на неразрешенный внешний символ" C++
C++ Error LNK2001: неразрешенный внешний символ "_mainCRTStartup"
C++ Дружественная функция шаблон и ошибка "Ссылка на неразрешенный внешний символ"
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Тиран
Сообщений: n/a
17.11.2012, 22:50     Ошибка: неразрешенный внешний символ "_mainCRTStartup" #2
вот у меня та же самая байда , главное дело юзал VC 6 98 года ) все нормально . установил 2010 - тот же код- выдает такую ошибку , что делать подскажите?
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
17.11.2012, 23:04     Ошибка: неразрешенный внешний символ "_mainCRTStartup" #3
SpartakusMd, какой проект выбрали в студии?
Выбирайте пустой консольный проект и вставляйте туда свой код
Тиран
Сообщений: n/a
17.11.2012, 23:33     Ошибка: неразрешенный внешний символ "_mainCRTStartup" #4
почему , когда я создаю пустой консольный вин32 и пишу туда самое -простое :

#include <iostream>

int main () {}

выдает ошибку 1>LINK : error LNK2001: неразрешенный внешний символ "_mainCRTStartup" ((((

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

#include "stdafx.h" и после этого все работает нормально .

Кто может обьяснить ?

До сегодняшнего дня ,я пробывал использовать VC 6.00 1998 года , так там все было норм - все примеры из книжки перепечатывались и работали ) а тут поставил 2010 и ппц. ничего не компилится, пока не включил STDAFX.h
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
17.11.2012, 23:37     Ошибка: неразрешенный внешний символ "_mainCRTStartup" #5
А потому что не надо создавать win32 console project
Я же написал, надо создавать пустой проект (empty project)
Yandex
Объявления
17.11.2012, 23:37     Ошибка: неразрешенный внешний символ "_mainCRTStartup"
Ответ Создать тему
Опции темы

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