¿Cómo usan los juegos las bibliotecas?

Siempre me he preguntado cómo los juegos manejan las bibliotecas. ¿Qué sucede si quieres usar una biblioteca dinámica en un juego, digamos OpenGL?

Podrías ponerlo dentro de la carpeta /lib en Linux (-like), y que todo funcione correctamente; aún mejor, en los sistemas Debian usted podría simplemente configurarlo como una dependencia. ¿Cómo funciona esto en Windows? No hay un directory claro /lib , ¿dónde lo pones?

Obviamente, no puede pedirle al usuario que instale manualmente las bibliotecas. ¿Simplemente creas una carpeta en alguna parte y la agregas a la PATH entorno PATH ? ¿Primero comtesting dónde otros progtwigs podrían haberlo puesto? ¿Hay un 'estándar' para hacer esto?

En cuanto a su ejemplo, OpenGL siempre está vinculado dinámicamente porque su implementación es proporcionada por el fabricante de la tarjeta gráfica, por lo que cada vez que se aplica un parche OpenGL no es necesario rebuild / volver a vincular todas las aplicaciones. OpenGL en Windows se instala cuando instala el controller de tarjeta gráfica como Nvidia o ATI, y OpenG32.dll generalmente se instala en la carpeta system32 para que cada aplicación pueda vincularse dinámicamente a él.

Al actualizar otras bibliotecas, la mejor práctica es permitir que el instalador coloque las bibliotecas dentro del directory del juego con su ejecutable, para que su ejecutable pueda verlas. Otras opciones es instalarlas en system32 pero esto es MALO, ya que distribuirá sus files en todas partes en la PC del usuario y, en consecuencia, el usuario lo odiará.

Tenga en count que Windows solo mira los directorys que están definidos en la variable de entorno Path y el directory activo actual que generalmente es el directory de ejecución del juego. Si las librerías se encuentran en alguna parte del tree de directorys del juego, debe indicarlas explícitamente (según cómo se enlace) la biblioteca de enlaces para cargar ./Core/X.dll

Aquí hay una captura de pantalla de mi PC (con Windows 8), para el directory de Battlefield 3, claramente el juego está usando las bibliotecas de Qt y las está instalando dentro del directory de juegos. Tenga en count que BF3.exe es un nivel más alto que Qt libs, concretamente en Battlefield 3 Dir. Esta es solo una forma de estructurar sus bibliotecas de aplicaciones.

enter image description here