Поэтому я хотел попробовать использовать класс spritefont в DirectXTK, и после включения всех необходимых файлов я получаю сообщение об ошибке, появляющееся при запуске программы, сообщая мне, что точка входа в процедуру CreateFile2 не может быть расположена в kernel32.dll. Теперь я искал проблему, и из того, что я могу сказать, кажется, что directxtk пытается использовать определенные вещи для Windows 8 (или, возможно, 8.1), в то время как я использую Windows 7. Общее исправление, которое люди, кажется, предлагают, состоит в том, чтобы изменить, какая версия используется путем определения
#define WINVER 0x0601
#define _WIN32_WINNT 0x601
чтобы сделать это использовать версию Windows 7. Я помещаю эти определения в заголовочный файл, как говорит msdn, но я все еще получаю ту же ошибку. Если это имеет значение, я пишу код на c ++ в visual studio 2013.
Набор инструментов DirectX поддерживает широкий спектр платформ Microsoft и конфигураций ОС, поэтому первым делом убедитесь, что вы выбрали правильный пакет VCXPROJ и / или NuGet для своего предполагаемого проекта и редакции компилятора Visual C ++.
Для настольных приложений Windows, использующих VS 2013, вы должны использовать:
DirectXTK_Desktop_2013.vcxproj
или NuGet пакет directxtk_desktop_2013
Методы кодирования, используемые в библиотеке, подробно описаны в этой статье. Методы кодирования двойного назначения для игр.
Основным элементом управления, используемым во всей кодовой базе, является целевая версия ОС Windows, которая устанавливается _WIN32_WINNT
согласно MSDN. С Windows 8.1 SDK (входит в VS 2013) SDK по умолчанию будет использовать _WIN32_WINNT=0x0603
/ _WIN32_WINNT=_WIN32_WINNT_WINBLUE
что означает сборку для ОС Windows 8.1 или более поздней версии. Вот почему код использует CreateFile2
который необходим для использования кода в Магазине Windows 8.x, Windows Phone 8.x или Windows 10 UWP.
Однако, если вы используете настольные проекты Windows, они создаются с _WIN32_WINNT=0x0600
/ _WIN32_WINNT=_WIN32_WINNT_VISTA
и библиотека будет использовать API-интерфейсы, работающие в Windows Vista SP2 + KB971644 (необходимо для Direct3D 11 и Windows 7.
в Шаблон Direct3D для Win32 Game Visual Studio, Я установил это значение в pch.h
перед включением любых других заголовков.
#include <WinSDKVer.h>
#define _WIN32_WINNT 0x0600
#include <SDKDDKVer.h>