Pasando una Cadena de Caracteres de Visual Basic 6 a una DLL de ANSI CSoftware Primario: Measurement Studio>>Visual Basic SupportVersión de Software Primario: 1.0 Versión de Software Primario Corregido: N/A Software Secundario: Measurement Studio>>Visual C++ Support
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 LongEntonces 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 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
