4

我正在尝试从 USB HID 设备中读取数据,我知道如何在 C# 中使用 DLLImport hid.dll 进行读取,但我想从 C++ 中读取,这样我就不必声明所有结构等,并且只包含头文件。

所以我下载了WDK,然后在包含头文件和链接库时遇到很多错误:

#include <windows.h>

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

int main(){

}

错误(163 个中的 6 个):

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?我如何在 Visual Studio 中正确进行 SDK 升级?

非常感谢您的帮助,

谢谢,卡洛斯

4

1 回答 1

8

我找到了一个解决方案,不知道为什么会这样,但确实如此!:

在 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

卡洛斯

于 2010-07-26T19:45:11.483 回答