Pasando una Cadena de Caracteres de Visual Basic 6 a una DLL de ANSI C



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:
¿Por qué obtengo caracteres ASCII aleatorios cuando trato de pasar una cadena de caracteres desde una función de Visual Basic 6 (VB 6) a una DLL de ANSI C?


Solución:
Visual Basic 6 (VB 6) y ANSI C almacenan las cadenas de caracteres de forma distinta, por lo que no es posible pasar una cadena de caracteres por referencia de VB 6 a una DLL de ANSI C como lo haría para pasar la cadena de caracteres a una función de VB 6.
Por ejemplo:
La función llamada en la DLL de ANSI C está declarada de la siguiente manera:
    int32 __stdcall ReadString(const char tempString[])

El prototipo para la llamada de la función en VB 6 necesita ser declarado y la cadena de caracteres debe pasarse por valor en lugar de por referencia:
    Declare Function ReadString(ByVal physicalChannel As String) as Long

Entonces puede mandar llamar la función en VB 6 con una cadena de caracteres:
CreateAIVoltageChan("Hello World")


Ligas Relacionadas:

Archivos Adjuntos:





Día del Reporte: 01/14/2008
Última Actualización: 05/11/2009
Identificación del Documento: 4HDGQ69S