ошибка LNK2019: неразрешенный внешний символ _main, указанный в функции ___tmainCRTStartup

Я не знаю, что в этом плохого. Я не могу найти, где ошибка, комментируя реализацию, также не разрешает ошибку.

Файл заголовка

#ifndef MAIN_SAVITCH_SEQUENCE_H #define MAIN_SAVITCH_SEQUENCE_H #include  // Provides size_t namespace main_savitch_3 { class sequence { public: // TYPEDEFS and MEMBER CONSTANTS typedef double value_type; typedef std::size_t size_type; static const size_type CAPACITY = 30; // CONSTRUCTOR sequence( ); // MODIFICATION MEMBER FUNCTIONS void start( ); void advance( ); void insert(const value_type& entry); void attach(const value_type& entry); void remove_current( ); // CONSTANT MEMBER FUNCTIONS size_type size( ) const; bool is_item( ) const; value_type current( ) const; private: value_type data[CAPACITY]; size_type used; size_type current_index; }; } #endif 

Источник

 #include "sequence1.h" #include  namespace main_savitch_3 { // Default constructer - sequence is empty sequence::sequence() { used = current_index = 0; } // Start the iteration void sequence::start() { current_index = 0; } // Iterate void sequence::advance() { current_index++; } // Number of items in the sequence sequence::size_type sequence::size() const { return used; } // Checks if there is a current item bool sequence::is_item() const { return current_index  0; } // Returns the current value sequence::value_type sequence::current() const { assert(is_item()); // no current item return data[current_index]; } // Adds an item BEFORE the current index void sequence::insert(const value_type& entry) { assert(entry != 0); // pointer is invalid assert(current_index = current_index; i--) data[i + 1] = data[i]; data[current_index] = entry; } // Adds an item AFTER the current index void sequence::attach(const value_type& entry) { assert(entry != 0); // pointer is invalid assert(current_index  current_index; i--) data[i + 1] = data[i]; if (current_index = 0) data[used] = entry; else data[current_index + 1] = entry; } // Removes the current item void sequence::remove_current() { for (size_type i = current_index; i < used; i++) data[i] = data[i + 1]; } } 

Даже если ваш проект имеет метод main() , компоновщик иногда путается. Вы можете решить эту проблему в Visual Studio 2010, выбрав

Project -> Свойства -> Свойства конфигурации -> Linker -> System

и изменение SubSystem на консоль.

У нас также была эта проблема. Мой коллега нашел решение. Это оказалось переопределение «основного» в заголовке третьей стороны библиотеки:

 #define main SDL_main 

Таким образом, решение заключалось в том, чтобы добавить:

 #undef main 

перед нашей основной функцией.

Это явно глупость!

если у вас есть функция _tmain в ваших проектах, вам нужно include .

Вам нужна функция main() поэтому программа знает, с чего начать.

В случае, если кто-то пропустил очевидное; обратите внимание: если вы создадите приложение GUI и
« -subsystem: windows » в link-args, запись приложения – WinMain @ 16 . Не main () . Следовательно, вы можете использовать этот fragment для вызова своего основного () :

 #include  #include  #ifdef __GNUC__ #define _stdcall __attribute__((stdcall)) #endif int _stdcall WinMain (struct HINSTANCE__ *hInstance, struct HINSTANCE__ *hPrevInstance, char *lpszCmdLine, int nCmdShow) { return main (__argc, __argv); } 

Вы реализовали функцию main() ?

 int main(int argc, char **argv) { ... code ... return 0; } 

[редактировать]

У вас есть main() в другом исходном файле, поэтому вы, вероятно, забыли добавить его в свой проект.

Чтобы добавить существующий исходный файл: в обозревателе решений щелкните правой кнопкой мыши папку « Исходные файлы », выберите « Добавить» , а затем « Существующий элемент» . Теперь выберите исходный файл, содержащий main()

Если вы используете Visual Studio. Причина, по которой вы можете получить эту ошибку, может быть связана с тем, что вы изначально создали новый файл header.h и затем переименовали его в файл file.cpp, где вы поместили функцию main ().

Чтобы исправить проблему, щелкните правой кнопкой мыши файл file.cpp -> нажмите «Свойства», чтобы перейти к
Свойства конфигурации -> Общие -> Тип элемента и изменить его значение на компилятор C / C ++ вместо заголовка C / C ++.

У меня была эта проблема, несмотря на:

  • с main() ; а также
  • конфигурирование всех других проектов в моем решении как статических библиотек.

Мое возможное исправление было следующим:

  • my main() был в пространстве имен, поэтому было эффективно вызвано something::main() … удаление этого пространства имен устраняло проблему.

Я столкнулся с ошибкой LNK2019 во время работы над проектом DLL в Visual Studio 2013.

Я добавил новую конфигурацию в проект. Но вместо того, чтобы иметь «Тип конфигурации» как «Динамическая библиотека», визуальная студия добавила его как «Приложение». Это привело к ошибке LNK2019.

Исправлена ​​ошибка LNK2019, перейдя в Project -> Properties -> Configuration Properties -> General и изменив «Тип конфигурации» на «Dynamic Library (.dll)» и «Target Extension» на «.dll».

Да, исходный вопрос говорит о проекте консоли / приложения, что является другой проблемой, чем мой ответ. Но я считаю, что добавление этого ответа может помочь кому-то (как и мне), который наткнулся на эту тему.

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

перейдите к разделу «Свойства проекта-Свойства-Конфигурация-Linker-input-Дополнительные зависимости», затем перейдите в конец и введите «; ws2_32.lib».

  • Используйте как статические, так и динамически связанные библиотеки в gcc
  • VA (виртуальный адрес) и RVA (относительный виртуальный адрес)
  • Как удалить пакет из Laravel с помощью композитора?
  • Что такое Microsoft Visual Studio, эквивалентная опции GCC ld - whall-archive
  • Почему порядок, в котором связаны библиотеки, иногда вызывает ошибки в GCC?
  • Ошибки компоновщика при компиляции против glib ...?
  • Что такое опция -fPIE для независимых по позиции исполняемых файлов в gcc и ld?
  • ошибка LNK2038: обнаружено несоответствие для '_ITERATOR_DEBUG_LEVEL': значение '0' не соответствует значению '2' в main.obj
  • Давайте будем гением компьютера.