Normas del foro

Curso Hacker
Bienvenido(a), Visitante. Favor de ingresar o registrarse.
¿Perdiste tu email de activación? - Diciembre 04, 2008, 05:50:53
Inicio Ayuda Ingresar Registrarse
Visita: Articulos - Juegos Gratis - Da Foros

Comunidad Underground Hispana  |  Programacion  |  Programación  |  Carbide C/C#/C++ (Moderador: Fashion)  |  Tema: excepción no controlada 0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] Ir Abajo Imprimir
Autor Tema: excepción no controlada  (Leído 268 veces)
dueñas
Recien Llegado
*
Desconectado Desconectado

Mensajes: 7


Ver Perfil Email
« en: Abril 11, 2008, 02:54:31 »

juegos gratis
Hola.  He hecho en c++ (visual studio 2005) un programa cuyas funciones provienen de una dll.  En tiempo de ejecución me da este error:

"Excepción no controlada en 0x00000000 en refdll.exe : 0x00000005 : Infracción de acceso al leer la ubicación 0x00000000"

Si alguien sabe a qué se puede deber esto, le agradezco mucho su comentario.

Bye.
En línea
~[L]~
Visitante
« Respuesta #1 en: Abril 11, 2008, 06:50:30 »

DEBERIAS USAR el debugger, pero, esto lo dice todo :

Citar
nfracción de acceso al leer la ubicación 0x00000000

significa que un puntero apunta a 0 o null, NULLPOINTER EXCEPTION, fijate usando el debugger donde es la excepcion xP

Sayonara^^
En línea
dueñas
Recien Llegado
*
Desconectado Desconectado

Mensajes: 7


Ver Perfil Email
« Respuesta #2 en: Abril 15, 2008, 04:07:57 »

Hola, y muchísimas gracias por responder.

He encontrado la excepción en la llamada de un procedimiento que utiliza como parámetro de entrada la dirección de un puntero, así que posiblemente sea como me has dicho, y es un puntero que no tengo inicializado.

De todos modos, aunque solo sea para descartar, ¿no puede deberse este error a que el fichero dll esté mal?  es que el dll también lo he hecho yo, y no tengo la certeza de que funcione bien.

Muchas gracias de nuevo.

Bye.
En línea
~[L]~
Visitante
« Respuesta #3 en: Abril 16, 2008, 03:11:27 »

Hola, y muchísimas gracias por responder.

He encontrado la excepción en la llamada de un procedimiento que utiliza como parámetro de entrada la dirección de un puntero, así que posiblemente sea como me has dicho, y es un puntero que no tengo inicializado.

De todos modos, aunque solo sea para descartar, ¿no puede deberse este error a que el fichero dll esté mal?  es que el dll también lo he hecho yo, y no tengo la certeza de que funcione bien.

Muchas gracias de nuevo.

Bye.

No inicializado o que ya se liberó..

Citar
refdll.exe

es un .exe, ahora si decís que es un exe que llama a la dll, no debería haber problemas, ahora, una pregunta..

La dll, ¿ la usas cargandola como modulo y obteniendo funciones a medida que necesites o usas dynamic link? (o sea, un .lib que referencie los símbolos a la dll)

Otro tema es que puede que la dll esté mal, pero puede que no, usa el debugger de tu IDE, fijate, deberia apuntar a donde está dando esa excepción y podría decirte cual es el problema y sabrías si es de la dll o no, pero sino, no sé, es muy en el aire esto =S


Sayonara^^
En línea
dueñas
Recien Llegado
*
Desconectado Desconectado

Mensajes: 7


Ver Perfil Email
« Respuesta #4 en: Abril 17, 2008, 04:14:43 »

Hola

Las funciones que uso se obtienen de la dll, sin el uso de ningun .lib.

Miraré con el debugger a ver que tal, pero es verdad que está muy en el aire, es por eso por lo que tengo tantas dudas de como solucionarlo.

Muchas gracias, un saludo.
En línea
~[L]~
Visitante
« Respuesta #5 en: Abril 17, 2008, 07:44:05 »

Hola

Las funciones que uso se obtienen de la dll, sin el uso de ningun .lib.

Miraré con el debugger a ver que tal, pero es verdad que está muy en el aire, es por eso por lo que tengo tantas dudas de como solucionarlo.

Muchas gracias, un saludo.


No, no es muy en el aire, es la poca informacion que tengo para deducir lo que pasa xD

Usá el debugger del Visual Studio, Links :


Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion

Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion

Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion

Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion

Sayonara^^
En línea
dueñas
Recien Llegado
*
Desconectado Desconectado

Mensajes: 7


Ver Perfil Email
« Respuesta #6 en: Abril 18, 2008, 01:06:27 »

Sí, la verdad es que apenas te he dado datos del problema, pero por eso no te preocupes.  La situación es que desde el código que vendrá a continuación, hago referencia a las funciones contenidas en una dll que he hecho previamente.  Al utilizar el debugger, el mensaje de error por el que tengo las dudas aparece justo en la llamada de la primera función, donde viene marcado, pero hay que tener en cuenta que aunque quite esa función y haga referencia a cualquier otra, me aparece la misma excepción.  El código que utiliza las funciones de la dll se llama refdinamic.cpp, y es el siguiente:
//Programa con el que probaremos la biblioteca dinámica dll.

#include "stdafx.h"

int _tmain(int argc, _TCHAR* argv[])
{
   HANDLE   ComDev;
   char *   pInterfaceName = "COM1";
   char *   pReadPMAddress = NULL;
   char *   pReadEEAddress = NULL;
   char *   pBaudRate      = "115200";
   FILE *   pFile          = NULL;
   eFamily  Family;
   char Buffer[BUFFER_SIZE];
   HINSTANCE hDll;

   typedef eFamily (CALLBACK* LPFNDLLFUNC1)(HANDLE);
   typedef int (CALLBACK* LPFNDLLFUNC2)(HANDLE, char*, char*, eFamily);
   typedef int (CALLBACK* LPFNDLLFUNC3)(HANDLE, char*, char*, eFamily);
   typedef int (CALLBACK* LPFNDLLFUNC4)(HANDLE, FILE*, eFamily);
   typedef HANDLE (CALLBACK* LPFNDLLFUNC5)(HANDLE, char*, char*); //
   typedef BOOL (CALLBACK* LPFNDLLFUNC6) (HANDLE); //

    // Functions pointer
   LPFNDLLFUNC1 ReadID;
   LPFNDLLFUNC2 ReadPM;
   LPFNDLLFUNC3 ReadEE;
   LPFNDLLFUNC4 SendHexFile;
   LPFNDLLFUNC5 OpenConnection; //
   LPFNDLLFUNC6 CloseConnection; //

   // carga de librería.
   hDll = LoadLibrary("lSendHexFile.dll");
   ReadID = (LPFNDLLFUNC1) GetProcAddress(hDll, "ReadID");
                ReadPM = (LPFNDLLFUNC2) GetProcAddress(hDll, "ReadPM");
                ReadEE = (LPFNDLLFUNC3) GetProcAddress(hDll, "ReadEE");
                SendHexFile = (LPFNDLLFUNC4) GetProcAddress(hDll, "SendHexFile");
   OpenConnection = (LPFNDLLFUNC5) GetProcAddress (hDll, "OpenConnection"); //
   CloseConnection = (LPFNDLLFUNC6) GetProcAddress (hDll, "CloseConnection"); //
//EN LA SIGUIENTE LLAMADA APARECE LA EXCEPCIÓN.
   if (OpenConnection(&ComDev, pInterfaceName, pBaudRate) == NULL){       return -1; //excepción
   }else{

//   Read Device ID
//      Family = dsPIC30F; // Tenemos que inicializar Family para que no nos de la excepción.
      Family = ReadID(&ComDev);

//   Process Read PM request and exit
      if(pReadPMAddress != NULL)
      {
         ReadPM(&ComDev, Buffer, pReadPMAddress, Family);
         return 0;
      }

//   Process Read EEPROM request and exit
      if(pReadEEAddress != NULL)
      {
         ReadEE(&ComDev, Buffer, pReadEEAddress, Family);
         return 0;
      }
       return 0;

// Read Hex file and transfer it to target
      SendHexFile(&ComDev, pFile, Family);

      CloseConnection(&ComDev); //
   }
    // descargar librería
   FreeLibrary(hDll);
   system("PAUSE");
   return EXIT_SUCCESS;
}

Como habrás podido ver, la dll a la que se refiere es lSendHexFile.dll, que es donde se encuentran todas las funciones a las que se refiere el código.

No sé que mas decir, pero este error me ha dejado bloqueado, no lo había visto antes, y me he quedado totalmente estancado con el proyecto por culpa de esto.

Muchísimas gracias de nuevo.  Un saludo.
En línea
Páginas: [1] Ir Arriba Imprimir 
Comunidad Underground Hispana  |  Programacion  |  Programación  |  Carbide C/C#/C++ (Moderador: Fashion)  |  Tema: excepción no controlada « anterior próximo »
Ir a:  


Ranking-Hits
Powered by SMF 1.1.7 | SMF © 2006-2007, Simple Machines LLC