Utilizar libreria C++ en C#

04/01/2010 - 17:01 por ByB | Informe spam
Hola,

Estoy programando en C#, y quisiera utilizar en mi programa una
libreria llamada Box2d y hecha en C++ que se encuentra aqui :
http://www.box2d.org/

Al compilar, no me crea una DLL sino ficheros .lib

Me puede alguién indicar como puedo utilizar Box2d en mi programa C# ?

Gracias.

Preguntas similare

Leer las respuestas

#1 RFOG
04/01/2010 - 17:17 | Informe spam
Tienes un port para C#:
http://www.box2d.org/wiki/index.php?title=Box2dx

Por otro lado, no puedes usar un lib desde C#. Tendrías que hacerte
una DLL a partir del mismo exportando tu las funciones. Si está bien
programada generalmente es trivial convertir una LIB en una DLL sin
apenas tocar el código fuente.

Además, si dicha LIB exporta clases de C++ no se pueden usar desde C#
sin armar una gorda:
http://blogs.msdn.com/vcblog/archiv...-in-c.aspx

On Mon, 04 Jan 2010 17:01:15 +0100, ByB
wrote:

Hola,

Estoy programando en C#, y quisiera utilizar en mi programa una
libreria llamada Box2d y hecha en C++ que se encuentra aqui :
http://www.box2d.org/

Al compilar, no me crea una DLL sino ficheros .lib

Me puede alguién indicar como puedo utilizar Box2d en mi programa C# ?

Gracias.



Microsoft Visual C++ MVP => http://geeks.ms/blogs/rfog
No es el tiempo el que nos falta. Somos nosotros quienes le faltamos a el.
Respuesta Responder a este mensaje
#2 Alberto Poblacion
04/01/2010 - 17:25 | Informe spam
"ByB" wrote in message
news:hht3d5$rsn$
Estoy programando en C#, y quisiera utilizar en mi programa una libreria
llamada Box2d y hecha en C++ que se encuentra aqui : http://www.box2d.org/

Al compilar, no me crea una DLL sino ficheros .lib

Me puede alguién indicar como puedo utilizar Box2d en mi programa C# ?



Le he echado un vistazo superficial al Box2d, y aunque está hecho en C++,
no usa las extensiones gestionadas, y genera una librería que no es de .Net,
sino que usa los puntos de entrada tradicionales, al estilo de las APIs de
Windows. Por lo tanto, tendrás que usarla mediante Platform Invoke
(P/Invoke), declarando una por una cada una de las funciones que quieras
usar, mediante el atributo [DllImport(...)]. No es tarea trivial, porque hay
que ir declarando cada método con todos sus argumentos, asignándoles los
tipos correctos.

Para poderlo usar desde .Net necesitarás una librería de enlace dinámico
(.dll); no puedes consumir desde .Net una librería enlazada estáticamente.
Así que tendrás que cambiar las opciones de compilación para que genere un
.dll en lugar de ficheros .lib. Supongo que esto se consigue cambiándole los
parámetros al compilador en el Makefile, pero sería mejor que lo preguntaras
en un grupo de C++ en lugar de este de C#.
Respuesta Responder a este mensaje
#3 Company
04/01/2010 - 17:50 | Informe spam
RFOG avait prétendu :
Tienes un port para C#:
http://www.box2d.org/wiki/index.php?title=Box2dx



Gracias, no lo habia visto, y me produjo une error cuando lo probé
(supuestamente sobre freetype6.dll), pero resulta que en realidad me
hacia falta el zlib1.dll

Desde que lo copié en el folder adecuado, la demostracion de Box2D en
version DLL funciona perfectamente.
Respuesta Responder a este mensaje
#4 ByB
04/01/2010 - 17:50 | Informe spam
RFOG a couché sur son écran :
Tienes un port para C#:
http://www.box2d.org/wiki/index.php?title=Box2dx



Gracias, no lo habia visto, y me produjo une error cuando lo probé
(supuestamente sobre freetype6.dll), pero resulta que en realidad me
hacia falta el zlib1.dll

Desde que lo copié en el folder adecuado, la demostracion de Box2D en
version DLL funciona perfectamente.
Respuesta Responder a este mensaje
#5 ByB
04/01/2010 - 18:12 | Informe spam
Alberto Poblacion avait prétendu :
"ByB" wrote in message
news:hht3d5$rsn$
Estoy programando en C#, y quisiera utilizar en mi programa una libreria
llamada Box2d y hecha en C++ que se encuentra aqui : http://www.box2d.org/

Al compilar, no me crea una DLL sino ficheros .lib

Me puede alguién indicar como puedo utilizar Box2d en mi programa C# ?



Le he echado un vistazo superficial al Box2d, y aunque está hecho en C++,
no usa las extensiones gestionadas, y genera una librería que no es de .Net,
sino que usa los puntos de entrada tradicionales, al estilo de las APIs de
Windows. Por lo tanto, tendrás que usarla mediante Platform Invoke
(P/Invoke), declarando una por una cada una de las funciones que quieras
usar, mediante el atributo [DllImport(...)]. No es tarea trivial, porque hay
que ir declarando cada método con todos sus argumentos, asignándoles los
tipos correctos.

Para poderlo usar desde .Net necesitarás una librería de enlace dinámico
(.dll); no puedes consumir desde .Net una librería enlazada estáticamente.
Así que tendrás que cambiar las opciones de compilación para que genere un
.dll en lugar de ficheros .lib. Supongo que esto se consigue cambiándole los
parámetros al compilador en el Makefile, pero sería mejor que lo preguntaras
en un grupo de C++ en lugar de este de C#.



Gracias por los consejos.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida