Stratos: Punto de Encuentro de Desarrolladores

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