elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Doble factor de autenticación o verificación en dos pasos


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  Corregir este error con Win32
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Corregir este error con Win32  (Leído 1,139 veces)
Meta


Desconectado Desconectado

Mensajes: 3.043



Ver Perfil WWW
Corregir este error con Win32
« en: 7 Abril 2018, 12:04 »

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
  1. #include "stdafx.h"
  2. #include "Windows.h"
  3. #include "iostream"
  4.  
  5. using namespace std;
  6.  
  7. int main()
  8. {
  9. // Título de la ventana.
  10. SetConsoleTitle(L"Consola C++ Win32 2017");
  11.  
  12. // Variable.
  13. char entrada[] = "\0"; // Guarda A, a, C, y c tipo string que introduces desde la consola.
  14.  
  15. while (true)
  16. {
  17. // Muestra en pantalla textos.
  18. cout << "Control bandeja del lector: " << endl << endl;
  19. cout << "A - Abrir bandeja." << endl;
  20. cout << "C - Cerrar bandeja." << endl;
  21. cout << "==========================" << endl;
  22.  
  23. cin >> entrada; // Aquí introduces letras A, a, C, y c.
  24.  
  25. cout << "\n" << endl;
  26.  
  27. // Abrir bandeja.
  28. if ((entrada[0] == 'a') || (entrada[0] == 'A'))
  29. {
  30. cout << "Abriendo..." << endl << endl; // Muestra en pantalla textos.
  31. mciSendString(L"set cdaudio door open", nullptr, 0, nullptr);
  32. cout << "Abierto." << endl << endl; // Muestra en pantalla textos.
  33. }
  34. // Cerrar bandeja.
  35. else if ((entrada[0] == 'c') || (entrada[0] == 'C'))
  36. {
  37. cout << "Cerrando..." << endl << endl; // Muestra en pantalla textos.
  38. mciSendString(L"set cdaudio door closed", nullptr, 0, nullptr);
  39. cout << "Cerrado." << endl << endl; // Muestra en pantalla textos.
  40. }
  41. // Si haz pulsado otro caracter distinto de A, C, a, y c aparece
  42. else
  43. {
  44. cout << "Solo pulsar A o C." << endl << endl; // este mensaje.
  45.  
  46. }
  47. }
  48. return EXIT_SUCCESS;
  49. }
  50.  

Antes me funcionaba, actualizo Visual studio y pasa esto.

Saludos.


En línea

Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/
MAFUS


Conectado Conectado

Mensajes: 1.110



Ver Perfil
Re: Corregir este error con Win32
« Respuesta #1 en: 7 Abril 2018, 12:16 »

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').


En línea

while(is_alive(yourself)) {
    make_true(yourself, yourdreams);
}
Meta


Desconectado Desconectado

Mensajes: 3.043



Ver Perfil WWW
Re: Corregir este error con Win32
« Respuesta #2 en: 7 Abril 2018, 12:35 »

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
  1. char entrada[] = "\0";

No provoca ningún error y funciona de mil maravillas. Aún así te escucho por si acaso.

Saludos.
En línea

Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/
MAFUS


Conectado Conectado

Mensajes: 1.110



Ver Perfil
Re: Corregir este error con Win32
« Respuesta #3 en: 7 Abril 2018, 12:53 »

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
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. int i;
  5.  
  6. int main() {
  7.    int a = 0;
  8.    char b[] = "\0";
  9.    int c = 0;
  10.  
  11.    for(i=0; i<10;++i) {
  12.        strcat(b, "a");
  13.        printf("b = %s\n", b);
  14.        printf("a = %d\nc = %d\n\n", a, c);
  15.    }
  16. }
« Última modificación: 7 Abril 2018, 13:02 por MAFUS » En línea

while(is_alive(yourself)) {
    make_true(yourself, yourdreams);
}
Meta


Desconectado Desconectado

Mensajes: 3.043



Ver Perfil WWW
Re: Corregir este error con Win32
« Respuesta #4 en: 7 Abril 2018, 13:24 »

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   
En línea

Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/
MAFUS


Conectado Conectado

Mensajes: 1.110



Ver Perfil
Re: Corregir este error con Win32
« Respuesta #5 en: 7 Abril 2018, 13:40 »

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.
En línea

while(is_alive(yourself)) {
    make_true(yourself, yourdreams);
}
Meta


Desconectado Desconectado

Mensajes: 3.043



Ver Perfil WWW
Re: Corregir este error con Win32
« Respuesta #6 en: 7 Abril 2018, 15:59 »

Código
  1. #include "stdafx.h"
  2. #include <stdio.h>
  3. #include <string.h>
  4. #define _CRT_SECURE_NO_WARNINGS
  5.  
  6. int i;
  7.  
  8. int main() {
  9. int a = 0;
  10. char b[] = "\0";
  11. int c = 0;
  12.  
  13. for (i = 0; i<10; ++i) {
  14. strcat(b, "a");
  15. printf("b = %s\n", b);
  16. printf("a = %d\nc = %d\n\n", a, c);
  17. }
  18. //return 0;
  19. }

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   
En línea

Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/
MAFUS


Conectado Conectado

Mensajes: 1.110



Ver Perfil
Re: Corregir este error con Win32
« Respuesta #7 en: 7 Abril 2018, 16:52 »

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.
En línea

while(is_alive(yourself)) {
    make_true(yourself, yourdreams);
}
Meta


Desconectado Desconectado

Mensajes: 3.043



Ver Perfil WWW
Re: Corregir este error con Win32
« Respuesta #8 en: 7 Abril 2018, 17:44 »

Código
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include "stdafx.h"
  3. #include <stdio.h>
  4. #include <string.h>
  5.  
  6.  
  7. int i;
  8.  
  9. int main() {
  10. int a = 0;
  11. char b[] = "\0";
  12. int c = 0;
  13.  
  14. for (i = 0; i<10; ++i) {
  15. strcat(b, "a");
  16. printf("b = %s\n", b);
  17. printf("a = %d\nc = %d\n\n", a, c);
  18. }
  19. //return 0;
  20. }

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   
En línea

Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/
MAFUS


Conectado Conectado

Mensajes: 1.110



Ver Perfil
Re: Corregir este error con Win32
« Respuesta #9 en: 7 Abril 2018, 19:20 »

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.
En línea

while(is_alive(yourself)) {
    make_true(yourself, yourdreams);
}
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Error en Lycos? Como corregir este supuesto ataque?
Desarrollo Web
Weißer 4 1,531 Último mensaje 24 Junio 2006, 01:39
por Weißer
Win32:BZub-DA , Win32:Agent-FUI y Win32:Sters-AC , ayuda
Seguridad
Helicot 1 1,313 Último mensaje 18 Mayo 2007, 18:05
por ghastlyX
[Ruby] Me ayudan a corregir este script?
Scripting
Eleкtro 4 1,792 Último mensaje 23 Febrero 2012, 10:20
por Eleкtro
como puedo corregir este error
GNU/Linux
felix6193 3 1,177 Último mensaje 31 Mayo 2012, 13:19
por Saberuneko
¿Me ayudarían a corregir este código?
Programación C/C++
AnungUnRama 6 1,257 Último mensaje 9 Mayo 2013, 16:30
por leosansan
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines