Visual C++ .NET - Devolver valor en parametro tipo Puntero

   
Vista:

Devolver valor en parametro tipo Puntero

Publicado por Pancho (2 intervenciones) el 18/06/2009 23:10:31
Hola comunidad

Estoy desarrollando una dll en Visual C++ que sera llamada desde una aplicacion escrita en delphi, tengo problemas en el pase de parametros ya que una de las funciones debe devolver una cadena, realice la misma dll con delphi y funciona bien, pero en C++ es donde me falla, he aqui el codigo en delphi

function Valores(const P1:pchar; var P2:pchar):integer; stdcall;
begin
StrPCopy(P2,'123456');
Result := 0;
end;

exports Valores;

El codigo anterior funciona muy bien, pero en C++

__declspec(dllexport) int __stdcall Valores(LCPSTR P1, LPSTR P2){

strcpy(P2, "123456");
return 0;

}

Simplemente no logro hacer que el puntero tome el valor de la cadena, he intentado de varias maneras pero ha sido imposible.

Agradeceria cualquier ayuda o comentario

Gracias de antemano
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
información
Otras secciones de LWP con contenido de Visual C++ .NET
- Código fuente de Visual C++ .NET
información
Códigos de Visual C++ .NET
- Manejo del color
- Juego del Risk
- Sistema de Ventas de comida en C++

Di la con respuesta aqui se las dejo

Publicado por Pancho (2 intervenciones) el 19/06/2009 00:24:23
Hola Comunidad

Despues de varios dias de intentos, pruebas por ensayo y error, etc... logre encontrar la solucion al problema planteado en el hilo inicial

Cuando se declara una funcion desde delphi de tipo

function UnaFuncion(const P1:pchar, var P2:pchar): integer; stdcall;

en C++

se debe declarar de la siguiente manera

extern "C" __declspec(dllexport) int __stdcall UnaFuncion(const char *P1, char **P2)

simplemente P2 pasa a ser un puntero doble

para asignar un valor a la direccion asignada por ese puntero doble se haria de la siguiente manera

strcpy((char *)*P2,"123456")

por supuesto P2 ya debe tener asignada su espacio de memoria correspondiente al momento de hacer el llamado desde delphi

Bueno con esto espero haber contribuido en algo a la comunidad, espero les aproveche

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar