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

Mientras estoy ejecutando el código simple como a continuación, tengo dos errores como los siguientes:

#include  #include  using namespace::std; template  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  void Stack :: Push (Type &val) { if (top+1<maxsize) stack [++top]=val; } 

Errores:

MSVCRTD.lib (crtexew.obj): error LNK2019: símbolo externo sin resolver _WinMain@16 referencia en la función ___tmainCRTStartup

¿Que debería hacer?

Eso es un problema de engarce.

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

desde Windows (/ SUBSYSTEM: WINDOWS) a la consola (/ SUBSYSTEM: CONSOLA)

Este me ayudó

Como mencionaron los otros, puede cambiar el SubSystem a la consola y el error desaparecerá.

O si desea mantener el subsistema de Windows, puede indicar 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 :

/ ENTRY: “mainCRTStartup”

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

Si tiene este problema y está usando Qt, necesita vincular qtmain.lib o qtmaind.lib

Incluye que tiene la línea:

 #define _tWinMain wWinMain 

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

no veo la función principal.

por favor, asegúrese de que tenga la función principal.

ejemplo:

 int main(int argc, TCHAR *argv[]){ } 

Espero que funcione bien. 🙂

Si su proyecto es Dll, entonces el caso podría ser que el vinculador quiere construir un progtwig de consola. Abra las propiedades del proyecto. Seleccione la configuración general. Seleccione el tipo de configuración Dynamic Library allí (.dll).

Intentó convertir ese archivo fuente en un ejecutable, lo que obviamente no es posible porque el punto de entrada obligatorio, la función main , no está definido. Agregue un archivo main.cpp y defina una función principal. Si está trabajando en la línea de comandos (lo cual dudo), puede agregar /c para comstackr y no vincular. Esto producirá solo un archivo de objeto, que debe vincularse en una lib o una aplicación estática o compartida (en cuyo caso necesitará un archivo de rechazo con la definición principal).

_WinMain es el nombre de Microsoft para main al enlazar.

Además: aún no está ejecutando el código, lo está comstackndo (y vinculándolo). C ++ no es un lenguaje interpretado.

No estoy seguro de dónde publicar esta respuesta, pero creo que es el lugar correcto. Encontré este mismo error hoy y cambiar los subsistemas no cambió nada.

Cambiar los archivos lib de 64 bits a 32 bits (x86) me sirvió, ¡espero que ayude a alguien por ahí!

Además de cambiarlo a Console (/SUBSYSTEM:CONSOLE) como han dicho otros, puede que necesite cambiar el punto de entrada en Propiedades -> Enlazador -> Avanzado -> Punto de entrada. Establézcalo en mainCRTStartup .

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

Si está utilizando CMake, también puede obtener este error cuando establece SET(GUI_TYPE WIN32) en una aplicación de consola.