SoloCodigo

Programación General => C/C++ => Visual C++ => Mensaje iniciado por: charlytos en Viernes 4 de Noviembre de 2005, 17:37

Título: Ejecutar Codigo C++ Desde Vb 6.0
Publicado por: charlytos en Viernes 4 de Noviembre de 2005, 17:37
Hola a tod@s:

Tengo un problema muy serio. Por una serie de requerimientos de una aplicacion q tengo q hacer, me he visto obligado a realizar una parte del proceso de mi aplicacion en Visual C++.
Tengo otra parte de este proceso q se hace en VB 6.0.

Pues bien, necesitaria saber como poder realizar la llamada al código c++ (para q realizara su tarea) y el array de datos q tengo en c++ (q es como resultado del proceso) devolverlo a la aplicacion Vb6.
Todo esto deberia de ser transparente para el usuario.

Muchas gracias por la ayuda.
Título: Re: Ejecutar Codigo C++ Desde Vb 6.0
Publicado por: Eternal Idol en Viernes 4 de Noviembre de 2005, 18:14
Podes generar una DLL con C++ exportando funciones de tipo __stdcall (es absolutamente necesario que sean stdcall) y llamarlas desde VB.

 :devil:
Título: Re: Ejecutar Codigo C++ Desde Vb 6.0
Publicado por: charlytos en Martes 8 de Noviembre de 2005, 16:39
Ahora el problema q me asalta es q no se pasar un String desde C++ (a traves de esa DLL) a VB6

Código VB6:

-- Llamada de la función:
retorno = DLLdevolverNombre(i, MyArrayNombre(i))
*MyArrayNombre(i) es un array de String
-- Declaración de la función:
Public Declare Function DLLdevolverNombre Lib "mutacion2.dll" (ByVal i As Long, ByVal nom As String) As Long

Código C++:

int FAR PASCAL DLLdevolverNombre (int i, char *nom)
{
   nom = mi_mutacion.DevolverNombre(i);
   return strlen(nom);
}

char* CMutacion::DevolverNombre (int i)
{
   return a_mutacion.nombre;
}

*a_mutacion es un array de objetos y uno de los elementos de ese objeto es el nombre.
      struct dato {
         int num1;
         int num2;
         char nombre[7];
         int intensidad;
         int fondo;
      } a_mutacion[4608];

A ver si me podeis ayudar, muchas gracias.