У меня есть KMD, который использует набор инструментов платформы WindowsKernelModeDirver8.1.
Драйвер компилирует ссылки и работает без проблем, используя VS 2013.
Я использую Windows 10.
Когда я пытаюсь скомпилировать его с VS 2015, я получаю следующую ошибку ссылки.
1> ССЫЛКА: ошибка LNK2001: неразрешенный внешний символ GsDriverEntry
1> terVertaPci.obj: ошибка LNK2019: неразрешенный внешний символ __security_check_cookie, на который есть ссылка в функции terVertaPciDevCtl
1> ntoskrnl.lib (gshandler.obj): ошибка LNK2001: неразрешенный внешний символ __security_check_cookie
1> terVertaPci.obj: ошибка LNK2019: неразрешенный внешний символ __security_cookie, на который ссылается функция terVertaPciDevCtl
Я не могу найти ссылки на неразрешенные символы где-либо в моем коде C ++.
Похоже, что VS 2015 связывает в разных библиотеках, чем VS 2013, но
Я не могу найти никакой информации о различиях. Моя организация имеет
объявил VS 2015 новым стандартом, поэтому я столкнулся с этой проблемой.
Я новичок в работе с кодом KMD. Любая помощь будет оценена.
Когда я впервые открываю решение в VS 2015, мне сообщают, что компилятор и библиотеки VC ++ необходимо обновить, но результаты автоматического обновления:
Configuration 'Win7 Debug|x64': no upgrade required. Platform Toolset is 'WindowsKernelModeDriver8.1'.
Configuration 'Win7 Release|x64': no upgrade required. Platform Toolset is 'WindowsKernelModeDriver8.1'.
TargetFrameworkVersion = v4.5 (was v4.5)
Окончание ретаргетинга: 1 выполнено, 0 не выполнено, 0 пропущено
Visual Studio 2015 работает только с WDK для Windows 10 версии 1703.
это не работает с WindowsKernelModeDriver 8.1 даже
хотя 8.1 это опция в PlatformToolset.
Средство обновления VS 2015 было неверным, когда говорилось «обновление не требуется»
Установка WDK для Windows 10, версия 1703 и настройка PlatformToolset
WindowsKernelModeDriver 10.0 решает проблему.
Других решений пока нет …