Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





C# I Dll C++ ( Visual Stduio 6.0 )

Iniciado por Degiik, 30 de Enero de 2006, 12:38:15 PM

« anterior - próximo »

Degiik

 Hola,

Tengo desarrollada en VC++ ( VS 6.0 ) una mini libreria 3d.
Cuando la voy a utilizar desde C# me da problemas, especifico el problema mirando de abstraerme de lo que realiza:


Tengo una función en la DLL MiFunc que mas o menos realiza lo siguiente:

char * MiFunc ( void )
{
char *v;

v = new char[255];

return v;
}

Desde C# Sharp la uso de la siguiente forma:

String s;

s=MiFunc ( )


El problema es que muchas veces funciona, y otras pocas da un ERROR... y ese error ejecutandose 2 o 3 veces el mismo código puede que desaparezca, y aparezca en otro sitio o desaparezca completamente, o vete a saber...

Me he planteado que la gestion de memoria de C# con el Framework i el Garbage Collector no reaccionará bien, para liberar mem reservada desde la DLL, aunque esten el la misma dirección de procesos... habia pensado que, mejor pasar un string y rellenarlo desde la DLL, de modo que esta no tenga que reservar memoria... pero como hago esto ?

si pongo desde la DLL...

void MiFunc ( char * v )
{
strcpy (v,"Hola");
}


y en C#....

String s;
...
MiFunc (s); o // MiFunc (out s);

el valor de s no varia.

alguna idea ?





;)  
egiik: h-O-5 hoja/ingestión 100mo Vida suspendida ( 1 día )







Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.