[C con Clase] Proyectos en Dev C++

Steven Davidson srd4121 en njit.edu
Jue Mar 12 16:46:57 CET 2009


Hola Vicente,

vicente lozano wrote:
> Hola,
> 
> Tengo un problema, llevo toda la vida haciendo aplicaciones pequenyas
> en las que yo hacia todo el codigo y no tenia que linkar con otros
> codigos ni nada.
> 
> En este momento necesito usar unas clases de otra persona y tengo el 
> codigo y todo y lo entiendo pero no consigo que compile porque me da 
> errores el linker en Dev-C++.
> 
> Vamos, que no tengo ni idea de como hacer un proyecto de este tipo y 
> necesito aprender pero no encuentro nada que me sirva.
> 
> Tengo hechos los diagramas de clases del codigo que tengo que linkar
> y el diagrama estatico de despliegue.
> 
> Son unas clases muy sencillas para manipular OSC (Open Sound Control) 
> que basicamente es una abstraccion sobre sockets para mandarse datos 
> entre aplicaciones.
> 
> Agradeceria que alguien pudiera explicarme un poco como va esto
> estaria muy agradecido, si lo necesitais no tengo ningun problema en
> mandar un rar/zip con los diagramas (StarUML) y los ficheros fuente.
> 
> Se que esta fuera del objetivo de esta lista pero no se donde
> aprender esto o donde preguntarlo porque estoy haciendo el proyecto
> en un sitio donde mi director no es informatico y no sabe programar y
> no estoy en el pais donde curso los estudios asi que tampoco puedo
> acudir al tutor de la universidad.
> 

Bien. Normalmente, al obtener una biblioteca, tendrás dos clases de 
ficheros: de cabecera ".h" y las bibliotecas propiamente dichas, ".a" o 
".lib". En Dev-C++, usamos el compilador Mingw que se basa en el 
compilador de GNU. Mingw usa bibliotecas con la extensión ".a". 
Básicamente, ".h" sirve para declarar y definir entidades para que el 
compilador de C/C++ sepa lo que se trae entre manos, mientras que las 
bibliotecas sirven para el enlazador, las cuales contienen las 
implementaciones de las funciones. Esto implica que el compilador 
desconoce las implementaciones de las funciones de tal biblioteca, pero 
sí debe saber sus prototipos, que deberían estar en el fichero de cabecera.

En un proyecto de Dev-C++, haz lo siguiente:

1. Accede a las propiedades del proyecto con ALT+P o a través del menú: 
Proyecto->Opciones del Proyecto".
2. Elige la pestaña "Parámetros...".
3. En el apartado "Linker", escribe o busca las bibliotecas que quieres 
que este proyecto use.
4. Presiona "Aceptar".

Sugiero consultar el artículo acerca de crear y usar bibliotecas en 
Dev-C++ en nuestra página. Puedes ir directamente al apartado: "Usar una 
librería en nuestros programas"; está en la segunda mitad de la página. 
El enlace es: http://c.conclase.net/devcpp.php?art=libestatica


Para completar este tema, diré que en MS-Windows, típicamente tenemos 
tres ficheros para bibliotecas externas cuando estamos desarrollando 
nuestras aplicaciones. El tercer fichero es la biblioteca dinámicamente 
enlazada o DLL. En este caso, el fichero ".a" o ".lib" contiene 
referencias a la DLL, la cual contiene las implementaciones de las 
funciones. El enlazador comprenderá que esta biblioteca ".a" es tratada 
de diferente manera, pero sin necesitar el fichero ".dll" para hacer su 
trabajo. Sí necesitaremos la ".dll" al ejecutar el programa. Con tal de 
que las DLL's que nuestro programa necesites estén en el mismo 
directorio que nuestra aplicación, no tendremos mayores problemas. Si 
no, entonces copia las ".dll" a "C:\Windows\System32" para que estén 
disponibles para todas las aplicaciones y para que MS-Windows pueda 
encontrarlas.


Espero que esto te ayude.

Steven





Más información sobre la lista de distribución Cconclase