Добрый день я являюсь новичком в области C++ и тут возникла интересная проблема совместимости новых библиотек со старыми ОС. Например есть некий код который использует типы из dxgi.lib, например
#include "stdafx.h"
#include "dxgi.h"
int main()
{
DXGI_SURFACE_DESC surface;
return 0;
}
.exe cкомпилированый с помощью Toolset v90, будет работать на всех ОС Windows где будет найдена соответствующая библиотека. Но например при попытке запуска этого .exe на Windows Vista, будет выдана соответствующая ошибка.
Не найдено dxgi.dll.
Почему .dll? Я могу ошибаться но из информации в интернете dxgi.lib это вроде бы как статическая заглушка для динамической версии dxgi.dll.
Возможно ли в коде как-то проверять что данная библиотека с данным типом не доступна, и уже например использовать другую библиотеку. С динамической библиотекой вроде бы более менее понятно, но что делать со статической заглушкой к динамической библиотеке. К тому же нет возможности изменять dxgi.lib и dxgi.dll тоже.
Ваша проблема возможно связана с самой операционной системой на которой вы запускаете ваше приложение.
В документации к DXGI говорится о том что минимальной поддерживаемой версией является Windows Vista, но не говорится о сервис паках или еще какой либо дополнительной информации.
Дополнение к комментарию.
Вам необходимо будет описать интерфейс посредник, для динамической загрузки, без использования статической линковки основного приложения с описанным интерфейсом. Далее динамически ее подгружать и работать с DXGI именно через этот интерфейс.
Псевдокод:
if(CheckDXGISuppport())
{
LoadLibrary("my_super_dxgi_interface.dll");
...
}
Где my_super_dxgi_interface.dll может статически линковаться с библиотекой/интерфейсом DXGI.
dxgi.lib - это статическая библиотека импорта из dll. То бишь она сделана для возможности прилинковать dxgi.dll без наличия этой самой dll.
DXGI поддерживается начиная с Windows Vista. Кроме того, для Windows Vista доступно обновление Platform Update, устанавливающее компоненты DXGI и DirectX11, соответствующие Windows 7.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости