From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.



¿Cómo Puedo Pasar un Arreglo Entre una DLL de ANSI C y Visual Basic 6?



Software Primario:
Versión de Software Primario: 1.0
Versión de Software Primario Corregido: N/A
Software Secundario: Measurement Studio>>Measurement Studio for Visual C++

Problema:
Cuando trato de llamar una función de ANSI C que llena un arreglo de una DLL que yo mismo creé, colapsa Visual Basic 6 (VB 6). ¿Por qué ocurre el colapso de VB 6 cuando la DLL intenta asignar datos al arreglo que se está pasando de VB 6 a la DLL de ANSI C?


Solución:
ANSI C y Visual Basic 6 (VB 6) almacenan los arreglos de forma distinta, por lo que no puede pasar un arreglo de VB 6 a una DLL de ANSI C de la misma forma que lo haría para una función de VB 6. Debe pasar el arreglo como una referencia al tipo de dato del que el arreglo consiste y posteriormente llamar la función con el primer elemento del arreglo.Por ejemplo:

La función es llamada en la DLL de ANSI C y es declarada como sigue:

int32 __stdcall ReadArray(double readArray[])

El prototipo de para la llamada de la función en VB 6 necesita ser declarado de la siguiente forma:

Declare Function ReadArray (ByRef readArray As Double)

Entonces puede llamar la función en VB 6 con el primer elemento en el Arreglo:

ReadArray(Data(0))


Ligas Relacionadas:

Archivos Adjuntos:





Día del Reporte: 01/11/2008
Última Actualización: 04/21/2009
Identificación del Documento: 4HAEHR9S