Programación General > Visual C++

 Error Al Linkar

(1/2) > >>

Jovi:
Estoy haciendo un proyecto en VC++ .Net que compila perfectamente el problema es cuando intento generar la solución que me da el error de linkado:

error LNK2019: símbolo externo _main sin resolver al que se hace referencia en la función _mainCRTStartup

El proyecto es un servidor que utiliza sockets, y creo que el problema es algo relacionado con ello y con alguna librería, pero he incluido (creo) todas las necesarias y algunas que he leido por internet, pero siempre me sale el mismo error.
¿Puede alguien ayudarme?

JuanK:
estas usando C? o C++?
debes condigurar elrpoyecto para que compile de acuerdo al lenguaje, y sino estoy mal dentro de las ocnfiguraciones del proyecto debes decir cual es el metodo principal, en este caso main

Eternal Idol:
El lenguaje que estes usando no tiene la menor importancia, da exactamente lo mismo que sea C o C++ y el problema no es que tenga que especificar el metodo de entrada (solo hay que hacerlo sino es uno standard) sino que el enlazador no lo encuentra.

Si tenes en las opciones configurado el subsystem del proyecto como CONSOLE necesitas usar main, cambialo a WINDOWS si estas usando WinMain como funcion principal de tu proyecto.

Si usas una funcion propia diferente tenes que usar la configuracion del linker para establecer el punto de entrada (Entry Point) desde linea de comandos es /entry:nombre_Funcion.
Si asi fuera solo podrias compilarlo en RELEASE y eliminaria la inicializacion de la Run Time Library, hay un par de tutoriales mios al respecto en este sitio, cualquier cosa pregunta mas al respecto.

 :smartass:  :whistling:

Jovi:
He establecido como punto de entrada la siguiente función en la configuración del linker y sigue dándome el mismo error. Ya no se que hacer...

int __stdcall DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
        return 1;
}

Eternal Idol:
Bueno, entonces estas haciendo una DLL y no un ejecutable. Dudo mucho que quieras quitar la CRT entonces te recomiendo hacer lo siguiente:

1. Deja en blanco el campo de Entry Point.
En vez de establecer el Entry Point con la correspondiente perdida de inicializacion de la CRT usa DllMain de la misma manera, esta sera llamada por el Entry Point de la CRT:


--- Código: Text --- BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved){  return 1;}  
2. Cambia el tipo de proyecto, ahora mismo debe ser "Aplicacion (.exe)", tenes que cambiar a "Biblioteca dinamica (.dll") entonces el enlazador buscara DllMain y asunto solucionado. Para hacer esto con Visual Studio .NET 2003:
Proyecto>>Propiedades>>General>>Tipo de Configuracion

3. Establece el subsystem a WINDOWS. Para hacer esto con Visual Studio .NET 2003:
Proyecto>>Propiedades>>Vinculador>>Sistema>>Subsistema

 :smartass:

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa