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


0