ошибка 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».

  • Почему фатальная ошибка «LNK1104: невозможно открыть файл« C: \ Program.obj »возникает при компиляции проекта C ++ в Visual Studio?
  • Ошибки компоновщика при компиляции против glib ...?
  • Определение переменной в файлах заголовков
  • Передача gcc непосредственно для связывания библиотеки статически
  • Порядок инициализации статических переменных
  • Как принудительно включить определение «неиспользуемых» объектов в библиотеке
  • Почему порядок, в котором связаны библиотеки, иногда вызывает ошибки в GCC?
  • Могу ли я смешивать статические и общедоступные библиотеки при связывании?
  • Interesting Posts

    Как OpenGL работает на самом низком уровне?

    Скопировать каталог из Активы в локальный каталог

    Получение a.ref не является функциональной ошибкой при обновлении до углового огня 1.2

    Подключиться к Windows Server 2012 только с действующим сертификатом клиента?

    Время ожидания истекло. Период ожидания истекает до завершения операции или сервер не отвечает. Заявление было прекращено

    Как работает hash-таблица?

    8086 на DOSBox: ошибка с инструкцией idiv?

    Как передать параметры запроса с помощью routerLink в новом Router V 3 alpha (владивосток)

    Когда следует использовать интерфейс в java?

    Как кэшировать учетные данные в Windows

    Отрегулируйте одно значение в тензоре – TensorFlow

    Можно ли увеличить ширину раздела «Все приложения» в меню «Пуск» Windows 10?

    где найти значение XSS по умолчанию для Sun / Oracle JVM?

    jQuery – Обнаружить изменение значения в скрытом поле ввода

    Как я могу предотвратить утечку памяти CompileAssemblyFromSource?

    Давайте будем гением компьютера.