DirectXTK — точка входа процедуры CreateFile2 не может быть расположена в kernel32.dll

Поэтому я хотел попробовать использовать класс 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.

0

Решение

Набор инструментов 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>
1

Другие решения


По вопросам рекламы [email protected]