error LNK2019: símbolo externo no resuelto _WinMain@16 al que se hace referencia en la función ___tmainCRTStartup

4 minutos de lectura

error LNK2019 simbolo externo no resuelto WinMain@16 al que se
NAIEM

Mientras ejecuto el código simple como se muestra a continuación, tengo dos errores de la siguiente manera:

#include <iostream>
#include <string>
using namespace::std;

template <class Type>
class Stack
{
public:
    Stack (int max):stack(new Type[max]), top(-1), maxsize(max){}
    ~Stack (void) {delete []stack;}
    void Push (Type &val);
    void Pop (void) {if (top>=0) --top;}
    Type& Top (void) {return stack[top];}
    //friend ostream& operator<< (ostream&, Stack&);
private:
    Type *stack;
    int top;
    const int maxSize;
};

template <class Type>
void Stack <Type>:: Push (Type &val)
{
    if (top+1<maxsize)
        stack [++top]=val;
}

Errores:

MSVCRTD.lib(crtexew.obj): error LNK2019: símbolo externo no resuelto _WinMain@16 referenciado en función ___tmainCRTStartup

¿Qué tengo que hacer?

  • ¿Es este todo el código? ¿Dónde está su función principal?

    – Connman

    8 de julio de 2011 a las 15:09

  • También parece que el tipo de proyecto está mal configurado. El error del enlazador con respecto a WinMain implica que intentó crear un proyecto Win32. Si solo desea algo para generar texto en el símbolo del sistema, intente cambiar el tipo de proyecto a Consola.

    – Kilanash

    8 de julio de 2011 a las 17:52

  • Por cierto, si obtiene errores del compilador/vinculador, no está “ejecutando” el código.

    – André Carón

    9 de febrero de 2012 a las 8:55

  • Intenté cambiar el tipo de proyecto, pero project=exe funcionó en lugar de la consola.

    – Dom

    8 oct 2014 a las 12:53

1646959988 963 error LNK2019 simbolo externo no resuelto WinMain@16 al que se
Bohdan

Eso es un problema del enlazador.

Intente cambiar Propiedades -> Enlazador -> Sistema -> Subsistema (en Visual Studio).

desde Ventanas (/ SUBSISTEMA: VENTANAS) para Consola (/SUBSISTEMA:CONSOLA)

este me ayudo

  • Tengo el mismo problema. Tu respuesta no está ayudando. ¿Alguna otra sugerencia?

    – Parth Sane

    26 de junio de 2014 a las 9:30

  • Tuve ese problema al usar MS Visual Studio. Si su entorno es diferente, es posible que tenga que arreglarlo de manera diferente. Pero aún debería ser un problema del enlazador.

    – Bohdan

    02/10/2014 a las 22:13


  • Si estás usando tWinMain como su función principal, debe incluir tchar.h o cambiarlo a cualquiera WinMain o wWinMain dependiendo de si su aplicación es Unicode o no. Si no lo hace, también se produce este error del enlazador incluso con el subsistema correcto. (/ SUBSISTEMA: VENTANAS)

    – Lisa

    29 de marzo de 2015 a las 4:45


  • Esto me ayudó, aparte de eso también tuve que deshabilitar Avast antivirus

    – XCS

    1 de diciembre de 2015 a las 20:28

  • Esto funcionó solo después de que seleccioné “todas las configuraciones” para la plataforma y el tipo. Al seleccionar “compilar” en la “Solución”, se intentó compilar todo y el primero que se intentó NO fue el especificado para el subsistema de la consola.

    – Joseph Stateson

    29 de noviembre de 2019 a las 18:37

Como mencionaron los demás, puede cambiar el Subsistema a Consola y el error desaparecerá.

O si desea mantener el subsistema de Windows, simplemente puede sugerir cuál es su punto de entrada, porque no ha definido ___tmainCRTStartup. Puede hacer esto agregando lo siguiente a Propiedades -> Enlazador -> Línea de comando:

/ENTRADA:”principalCRTStartup”

De esta manera te deshaces de la ventana de la consola.

  • +1: “De esta manera te deshaces de la ventana de la consola”. – ¡Frio! Algo aprendido ¡nuevo hoy!

    – Valentín H.

    13 de marzo de 2014 a las 16:48

  • +1 por el consejo, estuve tratando de resolver esto durante unos 20 minutos, ya que con SFML solo puedo especificar el subsistema Windows, con GLFW que obviamente no es diferente, así que gracias (=

    – Daniel

    16 de julio de 2016 a las 10:54

Si tiene este problema y está utilizando Qt, debe vincular qtmain.lib o qtmaind.lib

  • Eso está en Proyecto -> Propiedades -> Enlazador -> Entrada. Agregar $(QTDIR)\lib\qtmaind.lib a dependencias adicionales.

    – Mathiasfk

    9 de febrero de 2018 a las 11:34

  • agregando CONFIG += console al .pro file solucionó el problema de mi proyecto Qt

    – Sincronizar

    24 de febrero de 2020 a las 11:57

  • Tenga en cuenta que en QT6 qtmain.lib se ha ido. Así que debes usar las respuestas de “Morten Kristensen” para arreglar esto.

    – jpo38

    28 de enero a las 8:32

error LNK2019 simbolo externo no resuelto WinMain@16 al que se
matiasfk

Además de cambiarlo por Console (/SUBSYSTEM:CONSOLE) como han dicho otros, es posible que deba cambiar el punto de entrada en Propiedades -> Enlazador -> Avanzado -> Punto de entrada. Configúralo en mainCRTStartup.

Parece que Visual Studio podría estar buscando la función WinMain en lugar de main, si no especifica lo contrario.

1646959989 528 error LNK2019 simbolo externo no resuelto WinMain@16 al que se
Zaki

Incluir <tchar.h> que tiene la línea:

#define _tWinMain wWinMain

1646959989 651 error LNK2019 simbolo externo no resuelto WinMain@16 al que se
petronio

Si utiliza el juego de caracteres Unicode, pero no se configuró la entrada, puede especificar /ENTRY:”wWinMainCRTStartup”

1646959989 208 error LNK2019 simbolo externo no resuelto WinMain@16 al que se
Alex

Si realmente quieres usar _tWinMain() en lugar de principal()
asegúrese de que la configuración relevante de su proyecto tenga

  1. Enlazador-> Sistema -> Subsistema => Windows(/SUBSISTEMA:WINDOWS)
  2. C/C++ -> Preprocesador -> Definiciones de preprocesador => Reemplace _CONSOLE con _WINDOWS
  3. En el archivo c/cpp donde _tWinMain() se define, agregue:

    #include <Windows.h>
    #include <tchar.h>

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad