2012-09-27 17 views
11

En el pasado, mientras intentaba crear complementos para algunas aplicaciones. Estos son siempre archivos dll y he seguido las instrucciones en la documentación del SDK de la aplicación, pero nunca he realmente entendí lo que estaba haciendo. Con el fin de remediar esta He tratado de encontrar cualquier recurso que se ocupa más con algunos aspectos prácticos de la programación en C++, incluyendo tratar con dlls, una lista de la parte superior de mi ser cabeza:Una solicitud de buenos tutoriales sobre programación dll

  • archivos DLL, ¿Para qué se usan y por qué?
  • ¿por qué usar archivos dll sobre libs?
  • ¿De qué se trata el archivo .def? ¿Es solo un microsoft?
  • ¿Para qué sirve un archivo de manifiesto?
  • ...

Básicamente, todas esas opciones preciosas que se pueden ver en un IDE (Visual Studio y XCxcode para mí) - ¿cómo se aprende lo que son y cómo usarlos en combinación con código un poco más complejo que escribir una aplicación 'hola mundo'? Supongo que estoy buscando una 'visión arquitectónica' más en la programación. Lo más que he encontrado hasta ahora en todos mis libros de C++ es que siempre hay una sección en source code > object code > linked w/ other obj code > executable , pero eso es todo.

Entonces, ¿hay algún libro bueno para alguien en mi posición de querer aprender más que la sintaxis C++? Sé sobre el código, sé sobre la orientación del objeto, sé sobre el STL. Necesito un buen libro o recurso para el siguiente paso.

Gracias! (y lo siento si es una pregunta vaga, pero ha llegado a esto)

+1

Oh, bueno, lo recomiendo (en mi humilde opinión estándar de facto) http://www.amazon.com/Patterns-Elements-Reusable-Object-Oriented-Software/dp/0201633612/ref=wl_it_dp_o_pC_nS_nC?ie=UTF8&colid=2E0Z6RTE6OPPQ&coliid= I3O54RFCDN6EQN para el "paso por encima del mundo hola". Para sus otras preguntas, responderé con una pregunta contigua: ¿conoce los enlaces estáticos y dinámicos? – Najzero

+0

Tal vez :) Por lo que yo entiendo, el enlace dinámico es el que las bibliotecas están vinculadas en el tiempo de ejecución (es decir, un dll) y el estático se está vinculando en tiempo de compilación (un archivo lib). Por supuesto, eso puede ser incorrecto, e incluso si es correcto, no tengo una buena apreciación de todas estas cosas desde el punto de vista de la arquitectura del sistema. Si esa es incluso la frase correcta: D –

Respuesta

1

Puedo referirme a las siguientes referencias. Vea si son de alguna utilidad para usted.

  1. C++ DLL Programming
  2. Assemblies
+0

Excelente, echaré un vistazo a esas, muchas gracias. –

4

Hay un excelente article en CodeProject en la programación DLL en C++.

+0

Se ve muy bien y en profundidad. ¡Gracias! Si conoce algún libro que cubra este tipo de temas, hágamelo saber :) –

9

archivos dll, ¿para qué se utilizan y por qué?

archivos dll son idénticos a los archivos .exe en Microsoft Windows (excepto por 1 bit en el encabezado que dice que es una DLL). Una memoria dlls es compartida por cualquier programa que la use, guardando memoria. Los Dlls se pueden cargar y descargar desde la RAM a pedido, guardando la memoria. También se pueden actualizar de forma individual sin necesidad de recompilación el .exe (para los que puede que no tenga el código fuente disponible.)

¿Por qué utilizar archivos DLL sobre libs?

libs, también conocidos como bibliotecas estáticas , requieren el exe ser recompiladas cada vez que se realiza un cambio, DLLs no. Dlls guarde la memoria si los utilizan múltiples procesos y pueden actualizarse para todos los programas desde una ubicación centralizada.Para libs, tendrías que recompilar y reemplazar cada .exe individualmente. Dlls son archivos adicionales que DEBEN incluirse con el exe, por lo que dlls pueden ser malos para la distribución de Internet.

¿de qué se trata el archivo .def? ¿Es solo un microsoft?

A .def es un archivo específico del compilador que le dice al compilador cómo el dll (el API) debe disponerse en la memoria. Se pueden encontrar en muchos compiladores diferentes, incluido gcc, aunque las funciones compatibles y la sintaxis son diferentes.

¿Para qué sirve un archivo de manifiesto?

Un manifiesto es nuevo en Windows XP SP3, básicamente le dice a Windows qué versiones de las bibliotecas del sistema necesita, así como si el binario necesita privilegios de administrador para ejecutarse. (Recuerde que un dll es solo un exe con un bit diferente). Creo que un manfest también se utiliza en la firma de código, verificando si el ejecutable es legítimo.

+0

Gracias, algo muy útil. Ahora, todo lo que necesito es un libro que cuente sobre estas cosas, así que puedo ponerlas en un contexto aún más amplio. –

Cuestiones relacionadas