Delphi - Como debe declarase en VC++

 
Vista:

Como debe declarase en VC++

Publicado por Pancho (3 intervenciones) el 05/06/2009 17:42:35
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
sin imagen de perfil
Val: 65
Oro
Ha mantenido su posición en Delphi (en relación al último mes)
Gráfica de Delphi

RE:Como debe declarase en VC++

Publicado por E.T. (1244 intervenciones) el 05/06/2009 20:16:19
Puede que aqui encuentres la solución, suerte

http://www.todoexpertos.com/categorias/tecnologia-e-internet/programacion/delphi/respuestas/1397634/dll-en-c-para-delphi

http://www.delphifaq.com/faq/delphi/delphi_ide/f155.shtml

http://www.dbforums.com/delphi-c-etc/1051204-help-calling-c-dll-delphi.html
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

RE:Como debe declarase en VC++

Publicado por Pancho (3 intervenciones) el 10/06/2009 15:30:04
Gracias por responder E.T.

Pero ninguna de la direcciones que planteaste contiene la solucion que busco

Alguien se le ocurre otra idea?

Gracias!
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

Di la con respuestas aqui la dejo por si a alguien

Publicado por Pancho (3 intervenciones) el 19/06/2009 00:22:14
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