ayuda por favor!! uso de Dll de C++ en VB

sol22
02 de Febrero del 2004
Mi problema consiste en lo siguiente:
Tengo una función implementada en C++ y que tengo en una librería ( *.dll) a esta función la quiero llamar desde Visual Basic la función en C++ esta declarada de la siguiente manera:
int AbrirFichero(char *namefichero,FILEInfo *datosfichero)

donde namefichero es el nombre del archivo que quiero abrir ( en este caso un .vob) y datos fichero es de tipo estructura la cual he llamado FILEInfo y que tiene la siguiente declaración:

typedef struct {
int tipo; //0:val, 1:lst, 2:vob o mpg
char *ext[6];
FILE *fpsec; //para gestión de vales
char **lista // para gestión de .lst
int fotogramas,anch,alt,bits;

} FILEInfo;


Ahora en Visual Basic declaro esta función de la siguiente manera:

Declare Function AbrirFichero Lib "C:ProyectoproyectosolelibreriadvdReleaselibreriadvd.dll" (ByVal namefichero As String, ByRef datosfichero As FILEInfo) As Long

En este mismo modulo general donde declaro la función también estoy definiendo la estructura, haciéndolo de la siguiente manera:

Type FILEInfo
tipo As Long
ext(6) As String
lista As String
fotogramas As Long
anch As Long
alt As Long
bits As Long
End Type

Pues con todo esto lo que me ocurre es que cuando se ejecuta desde visual basic la funcion ( que en C++ funciona porque lo he comprobado) me da este error:
“Error 7 en tiempo de ejecución:
Memoria insuficiente”

Estoy un poco agobiada porque no puedo seguir y no tengo ni idea de que puede estar pasando, ¿ se te ocurre algo?¿ en que estoy fallando?



kike
02 de Febrero del 2004
Yo tengo un problema similar, estoy tratando de llamar a API de windows una *.DLL hecho en lenguaje C, la funcion recibe como parametro DirectoryFile de tipo CHAR *, y el correspondiente tipo de datos desde vb es el tipo byte, como tengo que pasar el tipo de datos byte cuando quiero guardar en ella un path donde guardar el archivo, es decir, C:scaneo○jpeg, esto tengo que cargar en el tipo de datos byte para pasarle como parametro a mi funcion que esta metida en la *.DLL. En C el parametro esta definido de tipo CHAR * y su correspondiente en vb debe ser uno de tipo BYTE. Gracias de antemano.!