• Domingo 15 de Diciembre de 2024, 04:39

Autor Tema:  Ejecutar Codigo C++ Desde Vb 6.0  (Leído 1306 veces)

charlytos

  • Nuevo Miembro
  • *
  • Mensajes: 18
    • Ver Perfil
Ejecutar Codigo C++ Desde Vb 6.0
« en: Viernes 4 de Noviembre de 2005, 17:37 »
0
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.
Carlos

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Ejecutar Codigo C++ Desde Vb 6.0
« Respuesta #1 en: Viernes 4 de Noviembre de 2005, 18:14 »
0
Podes generar una DLL con C++ exportando funciones de tipo __stdcall (es absolutamente necesario que sean stdcall) y llamarlas desde VB.

 :devil:

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

charlytos

  • Nuevo Miembro
  • *
  • Mensajes: 18
    • Ver Perfil
Re: Ejecutar Codigo C++ Desde Vb 6.0
« Respuesta #2 en: Martes 8 de Noviembre de 2005, 16:39 »
0
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.
Carlos