18/05/2011, 01:38
|
| | Fecha de Ingreso: mayo-2011
Mensajes: 15
Antigüedad: 13 años, 7 meses Puntos: 0 | |
Respuesta: exception access violation Ok, paso a dar más datos de el problema:
Estoy en Windows XP trabajando con Visual Studio 2010. El segundo programa es un programa totalmente independiente.
Aquí un ejemplo de las estructuras; son 8 estructuras distintas que las enlazo según convenga y que en el campo "senalX_tipo_dato" guardo el código de la estructura que voy a enlazar a continuación.
typedef struct campodato1 {
char senal1_nombre[60];
char senal1_nombre_var[60];
char senal1_modo_io[15];
char senal1_tipo_dato[15];
int valor1;
int next_nodo1;
struct campodato1 *siguiente1;
}nodo1;
Y la reserva de memoria la hago tal que así: nuevo_elemento1 = (nodo1 *) malloc ( sizeof (nodo1));
if (nuevo_elemento1 == NULL)
return -1;
Desde este mismo programa guardo en un fichero el puntero a la primera estructura, así como el tipo de estructura que es, para desde el segundo programa poder empezar a recorrerlas.
El segundo programa es realmente una dll llamada desde un programa escrito en ADA.
El acceso de la dll es muy simple en la prueba realizada porque pregunta por la primera estructura alocada. Cogemos la dirección de momoria guardada en el fichero, el tipo de estructura, convertimos la dirección de memoria en un puntero del tipo "nodo1" (lo guardamos en "actual1"), y al lanzar el "if" da el error.
Tambien he probado a displayar una de las variable y me vuelve a dar el mismo error. PROGRAM_ERROR : EXCEPTION_ACCESS_VIOLATION
(cadena1, 2 y 3 son los datos con los que llama ADA a la dll y se corresponden con esos campos de las estructuras.) if (strcmp(actual1->senal1_nombre_var, cadena1) == 0 &&
strcmp(actual1->senal1_equipo, cadena2) == 0 &&
strcmp(actual1->senal1_modo_io, cadena3) == 0)
Gracias por el interés. |