c++ - programacion - librerias turbo c
¿Cómo se agregan las bibliotecas externas para la compilación en VC++? (6)
¿Qué quieres decir con "agregarlos a una compilación"?
En VC, dentro de una solución, puede tener un proyecto cuya salida sea una biblioteca (estática o dinámica) y luego otro proyecto que dependa de la salida y la use (es decir, enlaces a ella).
En nuestra base de código, normalmente tenemos una solución separada para cada biblioteca o conjunto de bibliotecas y luego las vinculamos a proyectos de destino. La mayoría de nuestros proyectos de destino son ensamblados administrados; aquellos que necesitan funcionalidades no administradas generalmente se escriben en C ++ administrado o C ++ / CLI y se enlazan en bibliotecas estáticas no administradas. Hemos encontrado que este ha sido el más fácil de mantener ya que las bibliotecas no administradas son las menos cambiantes.
He trabajado con un par de compiladores de Visual C ++ (VC97, VC2005, VC2008) y realmente no he encontrado una forma clara de agregar bibliotecas externas a mis compilaciones. ¡Vengo de un fondo de Java, y en las bibliotecas de Java lo son todo!
Entiendo por compilación de proyectos de código abierto en mi caja de Linux que todo el código fuente de la biblioteca parece necesitar ser incluido, con la excepción de esos archivos .so.
También he oído hablar de las bibliotecas estáticas .lib y las bibliotecas dinámicas .dll, pero todavía no estoy del todo seguro de cómo agregarlas a una compilación y hacer que funcionen. ¿Cómo se puede hacer esto?
De acuerdo. normalmente no desea cargar bibliotecas dinámicas a mano, pero si lo hace, mire en LoadLibrary. luego debe llamar a otras funciones para obtener direcciones de puntero de función, etc. Por lo general, la forma en que funciona es que incluso los archivos .dll tienen archivos .lib para ellos ... por lo que cuando se necesitan, simplemente se cargan automáticamente.
cómo especifique los archivos .lib / bibliotecas estáticas en Propiedades / Enlazador / Entrada-> Dependencias Adicionales. en la GUI.
si estás escribiendo esto ... bueno. usted solo especifica los archivos .lib en la línea de comando en el momento del enlace.
Las bibliotecas en C ++ también se consideran útiles, pero la forma en que las integra es diferente a Java porque el compilador solo tiene que ver la interfaz de la biblioteca, que generalmente se declara en los archivos de encabezado. En Java, el compilador tendrá que inspeccionar las bibliotecas reales porque Java no tiene esta distinción entre un archivo de encabezado visible externamente y el código objeto generado que proporciona la implementación.
Lo que normalmente hace es construir las bibliotecas por separado, una vez, y colocar los archivos lib / dll generados más los archivos de encabezado en un lugar al que puedan acceder los proyectos que requieren que la biblioteca pueda acceder. Una expresión común es incluir los archivos de encabezado en include
, las bibliotecas estáticas en lib
y las bibliotecas dinámicas en subdirectorios bin
para su biblioteca compilada.
La razón por la que ha encontrado que la mayoría de las bibliotecas de C ++ se proporcionan en forma de código fuente y no en formato precompilado es que cada compilador de C ++ tiene cierta libertad sobre cómo manipular nombres de símbolos, etc. y el código de objeto resultante no es portátil en los compiladores. sistemas operativos solo. Así que enviar el código compilado no tiene sentido para muchas aplicaciones. Ocasionalmente lo encontrará con bibliotecas C ++ de código cerrado en Windows (las bibliotecas C son un asunto completamente diferente), pero luego el proveedor tendrá que proporcionar una versión compilada para cada tipo de compilación (Release, Debug, 32 bit, 64 bit etc) y el compilador de destino (varias versiones de Visual Studio requieren binarios diferentes, luego está Borland y un montón de otros compiladores) y rápidamente se convierte en una pesadilla para soportar ...
Cuando toma una biblioteca y la construye como una biblioteca dinámica en Windows (es decir, una DLL), el compilador / enlazador normalmente generará una biblioteca estática de "importación" (el mismo nombre, solo con una extensión .lib). Cuando vincula su proyecto con la biblioteca dinámica, especifica el archivo .lib como una dependencia de la biblioteca. Al vincular su aplicación con dicha biblioteca de importación, el vinculador puede registrar la dependencia en el archivo .dll y también qué símbolos debe esperar que proporcione la biblioteca.
Hacerlos funcionar, en el sentido de que su programa los encuentre en Windows, generalmente requiere que el archivo .dll esté en el mismo directorio que el ejecutable o accesible a través de la variable de entorno ''PATH'' y su equivalente en Visual C ++.
Creo que podrías preguntarle a los mecánicos cómo agregar una lib a un proyecto / solución en los IDEs ...
En 2003, 2005 y 2008 es algo similar a:
desde el explorador de soluciones: haga clic con el botón secundario en las propiedades de selección del proyecto (normalmente la última). Generalmente, selecciono todas las configuraciones en la parte superior ... Entrada del enlazador
Las dependencias adicionales entran allí
Desearía poder hacer una captura de pantalla para esto.
En VC6 es diferente soportarlo ya que todo esto es de memoria
las configuraciones o propiedades del proyecto y luego ir a la pestaña enlazador y encontrar dónde se pueden agregar las librerías.
Disculpe la naturaleza aleatoria de esta publicación. Creo que eso es lo que quieres, sin embargo.
Para agregar bibliotecas, esto es muy simple (si eso es lo que quiere decir) Proyecto -> propiedades -> configurar propiedades -> Enlazador -> Entrada -> bibliotecas adicionales. Vaya a una de las bibliotecas y presione enter. Has liberado un espacio para agregar una biblioteca, eay como pastel :)
Para agregar bibliotecas externas o directorios de biblioteca en un proyecto de VC ++, siga estos pasos:
1- Ir a las propiedades de su proyecto (que se puede hacer haciendo clic derecho en el proyecto en su solución)
2- Seleccione ''Enlazador''> ''General''> Directorios de biblioteca adicionales
3- Haga clic en la barra vacía delante de "Directorios de biblioteca adicionales" y VS le permite agregar directorios a los predeterminados en los que busca las bibliotecas requeridas.