Ocupar archivo ".h " y ".lib" en C#

11/11/2006 - 01:19 por Fuy | Informe spam
Hola, he buscado información en este grupo pero no entiendo bien
cuando explican DllImport.

Tengo unos archivos .h y .lib, pero quiero ocuparlos en C#. alguien me
podría enseñar como se hace eso??.

Por lo que he leido en el grupo dicen que no puedo ocupar directamente
el .lib, que lo que tengo que hacer es mandar a llamar a los archivos
dll usando DLLImport, pero tengo dudas en eso. Por ejemplo en donde
tengo que poner el archivo dll (es decir el path) para poder usar
DLLImport ??? Y en C# tengoq ue mandarlo a llamar con "using" ??

ok

ATTE
Fuy
 

Leer las respuestas

#1 Alberto Poblacion
11/11/2006 - 11:22 | Informe spam
"Fuy" wrote in message
news:
Tengo unos archivos .h y .lib, pero quiero ocuparlos en C#. alguien me
podría enseñar como se hace eso??.



Básicamente, no se puede. Son archivos de C o C++, no de C#. El
correspondiente compilador de C o C++ habrá producido ya una DLL compilada
con la funcionalidad a la que hacen referencia los .h y .lib. Esa DLL se
puede usar desde C# usando [DllImport], pero es un proceso que requiere
intervención manual: hay que leer el .h, interpretar el contenido, y
escribir (a mano) unas declaraciones de funciones en C# que reflejen el
mismo modelo de las declaraciones hechas en C dentro del .h. Una vez hecho
eso, a las declaraciones de funciones en C# se les antepone el atributo
DllImport indicando cuál es la DLL que contiene esas funciones, y cuál es su
mecanismo de llamada.

[...] pero tengo dudas en eso. Por ejemplo en donde
tengo que poner el archivo dll (es decir el path) para poder usar
DLLImport ???



La DLL debe estar en alguna ruta donde el programa pueda encontrarla. Una
solución es ponerla en el mismo directorio del programa. Otra es copiarla al
SYSTEM32.

Y en C# tengoq ue mandarlo a llamar con "using" ??



No, el using solo sirve para declarar espacios de nombres de .Net. Para
las librerías externas no sirve. Las llamadas las haces invocando esas
funciones externas que has declarado en tu código de C# y a las que les has
antepuesto el atributo [DllImport]. Las llamas igual que si no fueran
externas y realmente tuvieran código de implementación dentro de tu fuente
de C#.

Tienes un tutorial (en inglés) en la librería de MSDN aqui:

http://msdn.microsoft.com/library/d...torial.asp

Preguntas similares