Ver por etiquetas

Todas las etiquetas » interop (RSS)

¿Qué es C++ y qué es C++/CLI?

Introducción Suele aparecer con cierta frecuencia en los foros de ayuda cierta confusión entre C++ y C++/CLI. Hay quien pregunta algo de C++ siendo C++/CLI y viceversa, o quien intenta aplicar algo de C++/CLI a C++ (y también al revés), o simplemente se ve completamente ofuscado con el tema. En esta entrada vamos a intentar poner un poco de orden en todo esto. C++ no es C++/CLI C++ es el lenguaje de toda la vida, inventando por Stroustrup y que, pese al deseo de muchos, está más vivo que nunca y...

Interop en C# y C++/CLI. Dos puntos de vista de un mismo concepto.

El número 57 de la revista dotNetManía (que se corresponde a marzo del corriente) publica mi artículo de título homónimo a esta entrada que, como su nombre indica, repasa ciertas formas de Interop entre C# y una DLL nativa, así como C++/CLI y la misma DLL. Entre otras cosas explico cómo convertir un delegado en un callback nativo para ser pasado a una DLL que los requiera, cómo hacer justo lo contrario, que es usar un callback nativo desde código...
Publicado por Rafael Ontivero | con no comments

La estructura intraducible, I (de Interop y otras yerbas)

A veces resulta curioso cómo algo tan sencillo como mapear una estructura de C en .NET se puede convertir en un algo muy cercano a una pesadilla dependiendo del lenguaje que hayamos elegido para realizarlo. Partamos de la siguiente estructura de C: typedef struct { BYTE byOut[4]; // Outputs [0..3] BYTE byAux; // Aux output } usbOutput; A simple vista es algo muy elemental: un array de cuatro bytes y uno más después. Esto en una máquina Intel en realidad termina ocupando 8 bytes, 4 para el primer...

No uses goto, que yo lo usaré (III). Ganador[es]

Bueno, en la entrada anterior lancé un reto. Al principio estuve tentado de declararlo desierto, ya que todos os habéis centrado en la sentencia swtich , cuya mejor implementación a bajo nivel o bien utiliza gotos a mansalva o bien hace llamadas de tipo call , y muchas veces combinaciones de las mismas (y para ser justos con todos, ni me acordé cuando puse el reto). Pero una relectura del tema hace que no pueda declararlo desierto, ya que las tres entradas en las que se ha puesto algún ejemplo directo...

BUG: El bug del bool en interop desde C++ nativo

Basta que uno plante un circo para que le crezcan los enanos, y como se puede comprobar si uno mira al jardín de la vecina esa que está tan buena, a veces a uno le crecen sin estar bueno ni haber montado la carpa. No sé en qué pensarán estos señores de Microsoft, pero que el bug venga arrastrado desde por lo menos 2002 y no esté solucionado clama al cielo. Pero antes de despotricar –que lo haré-, vamos a ver en qué consiste. Uno tiene una inocente DLL que posee una función que devuelve un valor de...
Publicado por Rafael Ontivero | 4 comment(s)
Archivado en: ,,,

Hemos leído: C++/CLI in Action (Nishant Sivakumar, Manning)

Esto sí que es un libro técnico, y lo demás son tonterías. En otras palabras: el libro es bueno, muy bueno, de lo mejorcito que he leído de cualquier tema técnico relacionado con la programación. Como el título indica, se trata de una obra eminentemente práctica y profunda que trata la mayoría de los aspectos del C++/CLI sin entrar para nada en detalles sobre el .NET excepto al final, cuando explica algo sobre WPF y tecnologías asociadas. El...
Publicado por Rafael Ontivero | 3 comment(s)
Archivado en: ,,

Obtener el estado de la impresora a través de .NET

Entre la ingente cantidad de carencias que adolece el .NET Framework, una de las más hirienes tanto para los desarrolladores de sistema/escritorio como casi para cualquier otro desarrollador es poder obtener el estado de una impresora para evitar enviar inútilmente un trabajo a su cola o, simplemente, para informar de manera elegante de que no tiene papel, éste está atascado o simplemente que el dispositivo se encuentra en estado de "Off Line". Partimos del punto de que mediante Win32 es muy fácil...
Publicado por Rafael Ontivero | con no comments
Archivado en: ,,