Logo

¡Bienvenido a Stratos!

Acceder

Foros



Ahora otra de managed/unmanaged

Iniciado por shephiroth, 14 de Marzo de 2007, 11:22:29 AM

« anterior - próximo »

shephiroth

Buenas.

Sigo con mis problemas, ahora el problema se encuentra entre compartir datos del mismo tipo entre codigo manged y codigo unmanaged.

Tengo un archivo de funciones para trabajar con archivos a bajo nivel (sin depencias .net), y al tener mis clases en managed aunque los parametros son del mismo tipo me sale con:
error C2664: cannot convert parameter from 'cli::interior_ptr<Type>' to 'int *' with [Type=int] Cannot convert a managed type to an unmanaged type

Vaya, este tenia facil solucion, la encontre mientras escribia el post. De todos modos lo pongo por si a alguien le ocurre. La solucion parece comoda, aunque un poco engorrosa:

void cualquiera(int* a){*a=3;};//funcion en unmanaged
...
int edad = 5;//en managed
cualquiera(&a);//da el error 2664 dichoso.
pin_ptr<int> pp_edad = &edad;
int * up_edad= pp_edad;
cualquiera(up_edad);//no da ningun problema
printf("%i",a);//visualizaria 3, no 5


Funciona tambien para estructuras:

struct ole{};
void trabajar(struct ole **veremos); //unmanaged
...
struct ole *mio = (struct ole*)malloc(...);
pin_pnt<struct ole*> pp_mio = &mio;
struct ole ** up_mio = pp_mio;
trabajar(up_mio);//sin problemas


Me imagino que en vez de hacerlo a mano creando un operador se podrçia automatizar, pero a tanto no llego, y como lo necesito en pocos sitios demomento me vale.

SALUDOS ^^






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.