c++ - visual - error LNK2019: símbolo externo sin resolver_WinMain @ 16 al que se hace referencia en la función___tmainCRTStartup
visual studio c++ tutorial (11)
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.
Mientras estoy ejecutando el código simple como a continuación, tengo dos errores como los siguientes:
#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 sin resolver
_WinMain@16
referencia en la función___tmainCRTStartup
¿Que debería hacer?
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.
Eso es un problema de engarce.
Intente cambiar Propiedades -> Enlazador -> Sistema -> SubSistema (en Visual Studio).
desde Windows (/ SUBSYSTEM: WINDOWS) a la consola (/ SUBSYSTEM: CONSOLA)
Incluye <tchar.h>
que tiene la línea:
#define _tWinMain wWinMain
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 compilar 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á compilando (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í!
Si está utilizando CMake, también puede obtener este error cuando establece SET(GUI_TYPE WIN32)
en una aplicación de consola.
Si su proyecto es Dll, entonces el caso podría ser que el vinculador quiere construir un programa de consola. Abra las propiedades del proyecto. Seleccione la configuración general. Seleccione el tipo de configuración Dynamic Library allí (.dll).
Si tiene este problema y está usando Qt, necesita vincular qtmain.lib o qtmaind.lib
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. :)