Проблема с заголовками WDK (Windows Driver Kit) и VC ++ - PullRequest
4 голосов
/ 26 июля 2010

Я пытаюсь прочитать с устройства USB HID, я знаю, как это сделать в C #, используя DLLImport hid.dll, но я хочу сделать это из C ++, таким образом, мне не нужно объявлять все структуры и т. д., и просто включите заголовочные файлы.

Итак, я скачал WDK , а затем при включении файлов заголовков и связывании библиотек я получаю много ошибок:

#include <windows.h>

extern "C" {
    #include <hidsdi.h>
}

int main(){

}

Ошибки (6 из 163):

Error   1   error C2065: 'PASSIVE_LEVEL' : undeclared identifier    c:\winddk\7600.16385.1\inc\api\hidpi.h  302 driver
Error   2   error C4430: missing type specifier - int assumed. Note: C++ does not support default-int   c:\winddk\7600.16385.1\inc\api\hidpi.h  303 driver
Error   3   error C2146: syntax error : missing ';' before identifier 'NTSTATUS'    c:\winddk\7600.16385.1\inc\api\hidpi.h  303 driver
Error   4   error C2143: syntax error : missing ';' before '__stdcall'  c:\winddk\7600.16385.1\inc\api\hidpi.h  303 driver
Error   5   error C4430: missing type specifier - int assumed. Note: C++ does not support default-int   c:\winddk\7600.16385.1\inc\api\hidpi.h  303 driver
Error   6   error C2377: 'NTSTATUS' : redefinition; typedef cannot be overloaded with any other symbol  c:\winddk\7600.16385.1\inc\api\hidpi.h  303 driver

Хорошо, я где-то читал, что мне нужно обновить Windows SDK, у меня был Microsoft Windows SDK v6.0A, я скачал и установил Windows SDK v7.0. Но тогда, похоже, у меня есть два SDK сейчас? Как правильно сделать обновление SDK в visual studio?

Я очень ценю вашу помощь,

Спасибо, Carlos

1 Ответ

8 голосов
/ 26 июля 2010

Я нашел решение, не знаю, почему это работает, но это так!:

В Visual Studio перейдите по ссылке:

Инструменты-> Параметры-> Проекты-> Каталоги VC ++, а затем Показать каталоги для: включаемых файлов.

Добавить эти папки:

C: \ WinDDK \ 7600.16385.1 \ inc \ ddk и C: \ WinDDK \ 7600.16385.1 \ inc \ api

Теперь вот уловка, которая решила проблему для меня, и я не знаю почему, потому что кажется странным, но вот она:

C: \ WinDDK \ 7600.16385.1 \ inc \ ddk -> Этот каталог должен быть первым каталогом в списке!

C: \ WinDDK \ 7600.16385.1 \ inc \ api -> Этот каталог должен быть выше "$ (WindowsSdkDir) \ include" НО НИЖЕ "$ (VCInstallDir) include"

Пример:

C:\WinDDK\7600.16385.1\inc\ddk
$(VCInstallDir)include
$(VCInstallDir)atlmfc\include
C:\WinDDK\7600.16385.1\inc\api
$(WindowsSdkDir)\include
$(FrameworkSDKDir)include

Carlos

...