C/Visual C - cómo enlazar librería

 
Vista:

cómo enlazar librería

Publicado por eduardo (82 intervenciones) el 10/10/2009 03:17:55
Buenas tardes, estoy aprendiendo como crear y usar una librería usando el IDE Codeblocks con MinGw para ello me estoy apoyando en un tutorial que muestra como hacerlo pero usando el Dev-C++ ya que no encuentro ninguno que enseñe con el IDE que utilizo.
El asunto es que estoy muy liado.
El tutorial está en la sgte dirección: http://www.conclase.net/c/devcpp.php?art=libestatica

Luego que he creado la librería, es decir, el archivo "libcadenas.a" el tutorial indica crear un nuevo proyecto para usarla pero hasta aquí no se menciona si la librería se debe mover a algún lado. Bueno yo la deje la carpeta del proyecto en Escritorio/Proyectos/libcadenas
y la carpeta del proyecto que la usará en Escritorio/Proyectos/usocadena

Luego en el proyecto que usará la librería indica dar la orden "libcadenas.a" en el cuadro linker pero como el IDE que uso no tiene un cuadro linker debía tener algo similar, así que me dirigí a:
Project
Buil options...
Linker settings
El cual presenta 2 cuadros "Linker libraries" y "Other linker options" como no sabía en cual de los dos debía colocar la orden probé en uno en el otro y en ambos :)

Luego menciona que con esto ya debería compilar el programa, pues ya me imaginaba que no funcionaría pues yo me preguntaba como sabría el compilador donde está la librería o es que acaso automáticamente la detecta sin importar donde ésta se encuentre.
Me mostró 11 errores debido a las 11 llamadas que se hacen de las funciones indicando que no se encuentran las referencias

Lineas más abajo dice "Aprovechar las opciones del enlazador"
hice lo que menciona moví el header y la librería a las carpetas include y lib respectivamente de la instalación, indica agregar la linea de encabezado <cadenas.h> en el programa principal y cambiar la configuración del linker que tenía "libcadenas.a" por "-lcadenas" compilo y resulta que ahora sólo me muestra 1 error.

Linking console executable: bin\Debug\usocadenas.exe
C:\Archivos de programa\CodeBlocks\MinGW\bin\ld.exe: cannot find -l-lcadenas
collect2: ld returned 1 exit status
Process terminated with status 1 (0 minutes, 0 seconds)
1 errors, 0 warnings

Pero sigue sin funcionar.

He revisado el código minuciosamente para ver si hay algún error pero no lo encuentro ni tampoco el compilador.

Por favor disculpen que sea tan explícito y haya hecho esto tan largo pero es que necesito ayuda y necesito comprender este tema de creación y uso de librerías
Espero me puedan ayudar.
Muchas gracias.

Nota: Todo lo estoy trabajando en C, es decir, he hecho los cambios pertinentes:
<cctype> por <ctype.h>
cout << por printf()
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:cómo enlazar librería

Publicado por Paco (7 intervenciones) el 10/10/2009 20:42:18
Aunque yo no utilizo Codeblocks, supongo que debe hacerse del siguiente modo (es como se hace en otros IDE que he utilizado, y en todos ellos el proceso es similar).

Si la librería no está creada, abre un proyecto nuevo y dile que lo que quieres crear es una librería. En principio, escoge librerías estáticas (static library), en mi opinión son más fáciles de manejar cuando se está aprendiendo. Introduce el código fuente para la librería y genérala (habrá una opción Build Target o similar).

Si la librería ya está creada, abre el proyecto para el programa. Una vez abierto, añade los archivos de que se componga el proyecto. La opción de añadir archivos suele aparecer en el menú principal en la pestaña
File->Add Files to Project o en la pestaña Project->Add Files. Añade la(s) librería(s) y los correspondientes includes mediante el propio navegador del IDE, así te aseguras de que tienes el nombre y camino correctos. El añadir los includes al proyecto no es estrictamente necesario, pero nunca está de más y te puedes quitar muchos problemas de "no encuentro esto y aquello".

Espero que te haya servido de ayuda.

Saludos,

PACO
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:cómo enlazar librería

Publicado por eduardo (82 intervenciones) el 12/10/2009 15:04:47
Hola, yo ya tengo la libreria estática creada "libcadenas.a" pero no se cómo usarla desde un proyecto nuevo.
Hice lo que me indicas Agregar archivo, selecciono la librería pero no compila, me sale error. Por favor necesito ayúndeme.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:cómo enlazar librería

Publicado por Paco (7 intervenciones) el 12/10/2009 20:02:30
Indicame que archivos y en que categorias los tienes en el proyecto. Simplemente, dime como tienes el arbol del proyecto con los nombres de archivo completos (incluyendo path, solo necesito los nombres), algo asi como:

MiProyecto
Sources
Archivo1.cpp
Archivo2.cpp
...
Headers (puede que aparezca como Include, no conozco Codeblocks)
Header1.hpp
Header2.hpp
....
Libraries
MiLib1.xxx
MiLib2.xxx
...

Indicame tambien que codigos de error te da al hacer un build del proyecto.

Saludos,

PACO.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Por fiiiinn

Publicado por eduardo (82 intervenciones) el 12/10/2009 23:30:41
Hola, estoy super contento que por fin logré hacer correr el programa.
Los pasos fueron los sgtes:
- He creado un nuevo proyecto (Aplication console)
- Luego menu Project / Build options / Linker settings
Y en el cuadro "Link libraries" agrego la ruta completa donde se encuentra la librería.
Cuando le doy ok para agregar la librería, me aparece un cuadro que me pregunta:
Keep this as relative path? Si / No
Bueno he probado con "si" y con "no" e igual compila sin problemas.
- Luego tengo que copiar el header que contiene los prototipos de las funciones que usa la librería hacia la carpeta include de la instalación y build... perfecto : )

*Sin esto último no compila, supongo es porque hago #include <cadenas> en main()

Bueno supongo que sería la forma correcta de hacerlo aunque la pregunta del si/no que manda para el linker estoy en duda, pero bueno mientras alguien no me diga que estoy mal pues estaré feliz : )

Como nota final, mencionar que en la carpeta del proyecto se ha creado un archivo con extensión .depend

Un saludo a todos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

El explorador del proyecto

Publicado por eduardo (82 intervenciones) el 12/10/2009 23:42:33
El explorador del proyecto queda de la sgte manera:
Workspace
ProyectoCadena
Sources
main.c

No necesito agregar el header al proyecto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Unir programas

Publicado por Michell (1 intervención) el 17/01/2010 15:33:09
Hola por fis... ayudenme.... tengo seis diefrentes programas en turbo c..... entre uno de ellos esta un menu... necesito unir los otro 5 al menu... como puedo hacer eso???
Toda respuesta sera util!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar