Dev - C++ - Error en tiempo d ejecución al manejar strings DLL

 
Vista:

Error en tiempo d ejecución al manejar strings DLL

Publicado por Ricky (2 intervenciones) el 18/10/2008 16:50:38
Hola, lo primero decir que soy PRINCIPIANTE TOTAL, estoy intentando crear una DLL que usa la librería curl, las primeras pruebas han ido bien y he conseguido crear una función que puedo llamar desde otros programas....

DLLIMPORT char *EnviarMensaje(char *texto)
{

char *llamada = "http://www.newsletters.com/envio_email/[email protected]&txt=";
//strncat(llamada,texto,255);
char *resultado = curl_request(llamada);
if(resultado){
return resultado;
free(resultado);
}else{
return "#999 - Error de conexión";
}

}

... esta función lo que hace es conectarse con un script en PHP y pasarle parámetros, con lo cual me podría servir para conectar aplicaciones de escritorio con aplicaciones online, en este ejemplo el objetivo es mandar mensajes simples via email, proporcionando un usuario y contraseña, destino y texto del mensaje pero me encuentro con el problema de que si intento añadir un trozo de texto a la cadena de la llamada, la DLL compila bien pero me da un "error de aplicación" al intentar usar un exe que llame a esta función de la librería... es decir, si descomento la línea strncat al usar la librería me salta el famoso error "la memoria no se puede written" y si la comento todo va como la seda pero... ¿como puedo añadir parámetros a la llamada?

lo que pretendo es dejar algo asi...

DLLIMPORT char *EnviarMensaje(char *usuario, char *pass, char *destino, char *texto)
*char llamada ="http://www.newsletters.com/envio_email/?";

... y luego ir concatenando los parámetros...

?usu=nombre_del_usuario
&pass=contraseña
&destino=email_de_destino

...asi formo la cadena de llamada al script online y cuando la tenga completa la lanzo...

he intentado incluso crearme una función para concatenar y asi evitar el uso de string.h pero el resultado es el mismo, en cuanto intento modificar la variable llamada casca el programa (aunque compila bien) en ejecución...

los includes...
#include "dll.h"
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <curl/curl.h>
#include <string.h>

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

RE:Error en tiempo d ejecución al manejar strings

Publicado por Ricky (2 intervenciones) el 18/10/2008 21:10:25
Ya está resuelto, declarando la llamada como

char llamada[4096];

y concatenando a partir de ahi la url y los parámetros

para que no se almacene en memoria de solo-lectura (como pasaba al iniciarla con una cadena directamente)
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