Hola, tengo el siguiente problema:
Dentro de un programa de Visual FoxPro hemos de pasar un
array
de 60 enteros a una función que está implementada en C
dentro de una DLL y dentro de la función C tratar los datos
del array, cambiándolos y devolver un número. El caso es
que desde dentro de la función C no consigo acceder a los
datos del array y me parece es que los parámetros no los
debo pasar
ó recibir con el formato ó tipo correcto.
En el código FOX para declarar la función C que
utilizaremos que está en una DLL, hacemos así:
DECLARE INTEGER nombre_funcion IN EWSQL.DLL INTEGER @
pDirecciónCamps
La llamada a la función la hacemos así
DIMENSION aNUMEROS[60]
STORE 0 TO aNumeros
nRetorno = nombre_funcion(@aNumeros)
y el código C (simplificando mucho) de dicha función es
así:
int nombre_funcion(int *pArray)
{
return ((int)*(pArray+1));
}
Pues bien, una cosa tan sencilla como esta ya no funciona
pues habría de devolver el segundo elemento del array de
FOX pero siempre me devuelve 0.
Quizás es que en la definición de la DLL se ha de declarar
el parámetro del array de forma diferente ? O en la
llamada no poner el @ ?
Lo he probados de mil formas y no me devuelve el segundo
elemento, siempre devuelve 0.
Que hago mal ? Como se pasa un ARRAY a una DLL ?
Leer las respuestas