¿Es posible usar un archivo C++ .lib desde un programa C#?¿Es posible usar un archivo C++ .lib desde un programa C#?
Respuesta
No. Solo puede usar un archivo .dll completo desde un programa C#.
No directamente. Puede crear un ensamblado C++/CLI que consuma la lib y luego acceder a eso desde C#, o puede envolver la lib como una DLL.
Hay muchas maneras. Lea sobre "interoperabilidad" en MSDN ...
Una forma es exponer la lib como una DLL, y luego usar pinvoke para llamar a estas funciones desde un proyecto de C#. Eso te limita a una interfaz estilo C, sin embargo.
Si su interfaz es más compleja (por ejemplo, orientada a objetos), puede crear una capa C++/CLI que expondrá la estructura de clases de la lib a su programa C#. Esto significa que tendrá que crear un proyecto administrado de C++ (o C++/CLI como se le llama ahora); luego, diseñe una interfaz en código administrado que se implementará mediante llamadas a C++ nativo (es decir, su lib).
Otra forma de hacerlo es envolviendo su lib con una interfaz COM. Pero COM es un dolor, entonces yo no ...
Ya he respondido para envolverlo, pero aquí hay un example. ¡Buena suerte!
Lo que necesita es un contenedor administrado (C++/CLI) alrededor de la biblioteca C/C++ nativa con la que está trabajando.
Si están en busca de cualquier libro de C++/CLI se lo recomiendo de Nishant Sivakumar C++/CLI in Action
Eso depende, ¿tiene alguna limitación en este escenario?
Si tiene un archivo lib, debería ser posible primero compilarlo en un archivo DLL, en segundo lugar exponer las funciones que desea llamar en la interfaz DLL y, en tercer lugar, llamarlas usando métodos nativos C# (echar un vistazo en pinvoke.net sobre cómo hacer este bit).
Me gustaría echar un vistazo a swig, lo usamos con buenos resultados en nuestro proyecto para exponer nuestra API de C++ a otras plataformas de idiomas.
Es un proyecto bien mantenido que crea un envoltorio fino alrededor de su biblioteca C++ que permite que idiomas como C# se comuniquen directamente con su código nativo, ahorrándole la molestia de tener que implementar (y depurar) el código de pegamento.
no puede usar una lib, pero como dicen los demás, puede usarla si la envuelve en una dll.
swig puede tomar los encabezados de su .lib, y si no son demasiado complejos puede generar el dll para usted que luego llamaría con un pinvoke de C# que también se generaría mediante swig.
si su biblioteca es compleja y tiene referencia punteros inteligentes contados en todas partes, debe encontrar una alternativa.
- 1. ¿Cómo ejecutar un programa Java desde C#?
- 2. Ejecutar un programa desde ASP.NET C#
- 3. ¿Es posible alojar el CLR en un programa C?
- 4. Llamar a python desde un programa C++ para su distribución
- 5. Invocando el depurador desde un programa C
- 6. Incrustar un archivo ejecutable externo dentro de un programa C#
- 7. Ejecutar programa desde dentro de un programa C
- 8. ¿Es posible el programa Fast C++, C# GUI?
- 9. Accediendo a una biblioteca .lib de C++ desde C#
- 10. ¿Qué lib lib para usar cuando necesito analizar un archivo de configuración simple en Linux?
- 11. ¿Es posible llamar al código C++ desde C#?
- 12. Usar DLL en C sin lib
- 13. ¿Cómo usar yaml-cpp en un programa C++ en Linux?
- 14. C++ ¿por qué no se creó un archivo .lib?
- 15. ¿Cómo usar un método de ayuda de ruta desde un archivo en el directorio lib?
- 16. ¿Cómo creo un archivo .lib y un archivo .exe en Visual C++?
- 17. ¿Es un programa C++ realmente más lento que un programa C similar?
- 18. Cómo depurar un programa C
- 19. Si es posible generar un archivo PDF desde un UITableView?
- 20. leyendo un archivo XML en un programa C++
- 21. Llamar LLVM Jit desde el programa c
- 22. Leer desde un punto específico en un archivo C++
- 23. ¿es posible usar expresiones regulares en C++?
- 24. Manipulando un archivo Python desde C#
- 25. Biblioteca estática de C++: ¿cómo crear un archivo .a desde .lib?
- 26. ¿Qué EXIF lib puedo usar desde un programa Qt (en linux incorporado)?
- 27. Pasos para hacer que un LED parpadee desde un programa C/C++?
- 28. Produzca video desde el programa OpenGL C
- 29. Posible usar Mathematica desde otros lenguajes de programación (python/C#)?
- 30. ¿Cómo reiniciar Linux desde dentro de un programa C++?