Título: Corregir este error con Win32 Publicado por: Meta en 7 Abril 2018, 12:04 pm Hola:
He hecho un mini programa que abre y cierra la bandeja del lector. Lo que no entiendo a la hora de ejecutar la aplicación me sale este mensaje de error. Citar Gravedad Código Descripción Proyecto Archivo Línea Estado suprimido Error LNK1104 no se puede abrir el archivo 'C:\Users\Usuario\Documents\Visual Studio 2017\Projects\Bandeja_consola_win32_cpp\Debug\Bandeja_consola_win32_cpp.exe' Bandeja_consola_win32_cpp C:\Users\Meta\Documents\Visual Studio 2017\Projects\Bandeja_consola_win32_cpp\Bandeja_consola_win32_cpp\LINK 1 El código es: Código
Antes me funcionaba, actualizo Visual studio y pasa esto. Saludos. Título: Re: Corregir este error con Win32 Publicado por: MAFUS en 7 Abril 2018, 12:16 pm No te lo va a arreglar pero hay un error bastante malo:
Código: char entrada[] = "\0"; Hace que la cadena 'entrada' solo aloje espacio para un (1) único carácter. Cualquier adquisición de una cadena diferente provocará un desbordamiento pues al capturar una cadena de un (1) único carácter estarás guardado dos (2) el que te interesa seguido del carácter nulo ('\0').Título: Re: Corregir este error con Win32 Publicado por: Meta en 7 Abril 2018, 12:35 pm Buenas:
Curiosamente he cerrado Visual Studio, lo volví abrir y ya funciona. No aparece ningún error, el programa funciona al 100 %, puedo abrir y cerrar la bandeja. En cuanto a lo del: Código
No provoca ningún error y funciona de mil maravillas. Aún así te escucho por si acaso. Saludos. Título: Re: Corregir este error con Win32 Publicado por: MAFUS en 7 Abril 2018, 12:53 pm No es error de tiempo de compilación, pero puede llevarte a errores en tiempo de compilación por buffer overflow. Una cadena bien construida podría permitir la ejecución de código arbitrario (supongo que te suena esto). Por lo normal, si se escribe una cadena lo suficientemente larga el S.O. generará una excepción porqué se ha intentado escribir en un área no admitida de memoria.
Para ver los efectos del desbordamiento de buffer: Código
Título: Re: Corregir este error con Win32 Publicado por: Meta en 7 Abril 2018, 13:24 pm Me salta esto.
Gravedad Código Descripción Proyecto Archivo Línea Estado suprimido Error C4996 'strcat': This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. EfectosDesbordamientoBuffer_Consola_Win32 c:\users\usuario\documents\visual studio 2017\projects\efectosdesbordamientobuffer_consola_win32\efectosdesbordamientobuffer_consola_win32\efectosdesbordamientobuffer_consola_win32.cpp 16 Título: Re: Corregir este error con Win32 Publicado por: MAFUS en 7 Abril 2018, 13:40 pm Eso es que el compilador encuentra peligrosa strcat y te dice que puede provocar el desbordamiento del búffer, precisamente lo que queremos hacer. Para ello te pide que desactives los warnings
Escribe Código: #define _CRT_SECURE_NO_WARNINGS como primera línea del programa para saltarte esa protección.Título: Re: Corregir este error con Win32 Publicado por: Meta en 7 Abril 2018, 15:59 pm Código
Citar Gravedad Código Descripción Proyecto Archivo Línea Estado suprimido Error C4996 'strcat': This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. EfectosDesbordamientoBuffer_Consola_Win32 c:\users\usuario\documents\visual studio 2017\projects\efectosdesbordamientobuffer_consola_win32\efectosdesbordamientobuffer_consola_win32\efectosdesbordamientobuffer_consola_win32.cpp 17 Título: Re: Corregir este error con Win32 Publicado por: MAFUS en 7 Abril 2018, 16:52 pm Antes de cualquier include. Esto sirve para modificar el comportamiento de las librerías y por tanto debe ir antes de que estás hagan su trabajo.
Título: Re: Corregir este error con Win32 Publicado por: Meta en 7 Abril 2018, 17:44 pm Código
Citar Gravedad Código Descripción Proyecto Archivo Línea Estado suprimido Advertencia C4603 '_CRT_SECURE_NO_WARNINGS': no se ha definido la macro o la definición es diferente después del uso del encabezado precompilado EfectosDesbordamientoBuffer_Consola_Win32 c:\users\usuario\documents\visual studio 2017\projects\efectosdesbordamientobuffer_consola_win32\efectosdesbordamientobuffer_consola_win32\efectosdesbordamientobuffer_consola_win32.cpp 4 Citar Gravedad Código Descripción Proyecto Archivo Línea Estado suprimido Error C4996 'strcat': This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. EfectosDesbordamientoBuffer_Consola_Win32 c:\users\usuario\documents\visual studio 2017\projects\efectosdesbordamientobuffer_consola_win32\efectosdesbordamientobuffer_consola_win32\efectosdesbordamientobuffer_consola_win32.cpp 18 Título: Re: Corregir este error con Win32 Publicado por: MAFUS en 7 Abril 2018, 19:20 pm La cabecera precompilada, creo, te está fastidiando. Es verdad que son más rápidas a la hora de compilar pero no son tan dinámicas. Deberás borrar el archivo precompilado para que lo haga de nuevo y acepte el define.
Título: Re: Corregir este error con Win32 Publicado por: srWhiteSkull en 7 Abril 2018, 20:14 pm Posiblemente sea por el encabezado precompilado : #include "stdafx.h" . Puedes prescindir de ese include. Prueba de nuevo sin este.
https://msdn.microsoft.com/es-es/library/h552b3ca.aspx |