Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: Degiik en 30 de Enero de 2006, 12:38:15 PM

Título: C# I Dll C++ ( Visual Stduio 6.0 )
Publicado por: Degiik en 30 de Enero de 2006, 12:38:15 PM
 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 ?





;)  
Título: C# I Dll C++ ( Visual Stduio 6.0 )
Publicado por: MA]Mestre en 03 de Febrero de 2006, 12:16:17 PM
 Dale un vistazo a esto... a ver si hay suerte.

http://support.microsoft.com/?scid=kb;es;309801

http://msdn.microsoft.com/library/default....dingProblem.asp