Logo

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