Bibliotecas generales de Windows

Importante

La información de este tema se aplica a todas las versiones de Windows 10 y versiones posteriores. Aquí nos referiremos a esas versiones como "Windows", señalando cualquier excepción cuando sea necesario.

Una biblioteca paraguas es una sola biblioteca que vinculas y que cubre un subconjunto seleccionado de LAS API de Win32. Por ejemplo, una biblioteca paraguas denominada OneCore.lib cubre el subconjunto de API de Win32 que son comunes a todos los dispositivos Windows.

Las API de una biblioteca contenedora pueden implementarse en varios módulos (donde un módulo es un conjunto de API o una DLL). Pero la biblioteca unificadora oculta ese detalle, lo que hace que tu aplicación sea más portátil entre distintas versiones del sistema operativo. En tu aplicación de escritorio o controlador, vincula la biblioteca principal que cubre el conjunto de API que te interesa, y eso es todo lo que tienes que hacer.

Qué cubre una biblioteca paraguas

Una biblioteca paraguas cubre un subconjunto seleccionado de API. No es un índice completo de todas las API de cada módulo del que se extrae y una API determinada no está necesariamente presente en todas las bibliotecas paraguas.

El conjunto de API que cubre una biblioteca también es específico de la versión del SDK de Windows en la que se compila. Un SDK posterior puede agregar cobertura que no tenga una anterior.

Por ambos motivos, considere la página de referencia de cada API como la fuente autorizada para saber qué biblioteca enlazar. En la tabla Requirements (Requisitos ) de esa página se asigna un nombre a la biblioteca para esa API.

Bibliotecas disponibles

Biblioteca Descripción
OneCore.lib Trata el subconjunto de API de Win32 que son comunes a todos los dispositivos Windows. Vincula OneCore.lib (y ninguna otra biblioteca contenedora de Win32) para acceder a esas API. Si vinculas OneCore.liby solo llamas a las API de Win32 que cubre, la aplicación de escritorio o el controlador se carga correctamente en todos los dispositivos Windows.
OneCore_apiset.lib La variante del conjunto de API de OneCore.lib. Cuando un nombre de conjunto de API está disponible para una API, se resuelve a través de una importación directa de conjunto de API, por lo que no hay ningún módulo de reenviador intermedio implicado en el tiempo de carga. No se garantiza que un binario que lo vincule se ejecute tal cual en versiones de Windows lanzadas antes de los conjuntos de API que importa.
OneCoreUAP.lib Trata el subconjunto de API de Win32 que son comunes a todos los dispositivos Windows que admiten el Windows Runtime (WinRT). Vincula OneCoreUAP.lib (y ninguna otra biblioteca paraguas de Win32) para acceder a esas API. Si vinculas OneCoreUAP.liby solo llamas a las API de Win32 que cubre, la aplicación de escritorio o el controlador se carga correctamente en todos los dispositivos Windows compatibles con WinRT.
OneCoreUAP_apiset.lib La variante del conjunto de API de OneCoreUAP.lib. Cuando un nombre de conjunto de API está disponible para una API, se resuelve a través de una importación directa de conjunto de API, por lo que no hay ningún módulo de reenviador intermedio implicado en el tiempo de carga. No se garantiza que un binario que lo vincule se ejecute tal cual en versiones de Windows lanzadas antes de los conjuntos de API que importa.

No combine dos de estas bibliotecas en un binario. Cada uno existe para limitar el binario a una superficie de API determinada y vincular una segunda biblioteca puede enlazarlo a las API fuera de esa superficie.

Elección entre una biblioteca y su variante del conjunto de API

Para una API que cubren ambas variantes, las dos alcanzan la misma implementación en tiempo de ejecución. Lo que difiere es el nombre que acaba en la tabla de importación de tu binario y, por tanto, el rango de versiones de Windows en las que puede ejecutarse el binario.

  • Vincule la biblioteca sin formato (OneCore.lib, OneCoreUAP.lib) cuando necesite un único binario que también se ejecute en versiones de Windows publicadas antes de que existieran los conjuntos de API pertinentes. Importa nombres de módulos heredados de Windows, y el reenvío inverso redirige esas importaciones en las ediciones que ya no incluyen los módulos originales.
  • Vincule la variante del conjunto de API (OneCore_apiset.lib, OneCoreUAP_apiset.lib) cuando el archivo binario tiene como destino las versiones actuales de Windows. Prefiere un nombre del conjunto de API siempre que exista uno disponible para esa API, de modo que la importación se resuelva directamente al binario que aloja la implementación, sin ningún reenviador intermedio. Esa es la forma más eficaz. Si no se aplica ningún nombre del conjunto de API, se usa el nombre del módulo, igual que la biblioteca normal.

Ninguna de las dos opciones cambia qué APIs puedes usar. Cambia cómo se denominan las importaciones y hasta dónde se puede ejecutar el archivo binario.

Véase también