Pregunta: | 247 - CREAR UNA DLL EN VC++ PARA VB 4.0 |
Autor: | Gabriel |
Necesito ayuda Urgente: Estoy creando una DLL en Visual C++ 1.5 para ser utilizada desde Visual Basic 4.0(Estoy trabajando en 16 bits con Windows 95). Una de las funciones que he creado recibe una cadena y devuelve otra cadena, la declaracion del parámetro es la siguiente:NPSTR CALLBACK __export AVISO ( NPSTR cadena)Tambien he probada con LPSTR y char * |
Respuesta: | Isaac Valentin |
Hola Gabriel:
Tengo exáctamente el mismo problema que tú. Yo he conseguido resolverlo de una forma 'poco elegante' Mi función en C++ es del estilo int Venta (char* entrada, char* salida); y en VisualBasic declaro la función Venta así: Private Declare Function Venta Lib "SmpaItf.dll" (ByVal importe As String, ByVal buffer As String) As Integer en VB creo un string, que es donde en realidad voy a recibir los datos del VC dim buffer as string dim status as integer buffer = Space(1024) status = Venta("12.00", buffer) msgbox buffer La función en C lo que hace es "rellenar" el parámetro char* salida y, en visual basic, después de la llamada a la función Venta, la variable buffer contiene lo que la función en C ha puesto. No me gusta, aunque funciona, creo que es una forma 'guarra' de hacerlo y además nos obliga a definir el tamaño de la respuesta desde el Visual Basic ..... pero es la única forma en que he podido implementarlo ... si al final tu has conseguido una forma mejor ... por favor cuentamela. Thanks |
Respuesta: | Miguel Sepulveda |
Prueba a usar en VB ByRef y en C++ usa char *. Espero que te sirva para solucionar tu problema. Un saludo. |