【问题标题】:WDK (Windows Driver Kit) and VC++ headers problemWDK (Windows Driver Kit) 和 VC++ 头文件问题
【发布时间】:2010-07-26 18:37:07
【问题描述】:

我正在尝试从 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 升级?

非常感谢您的帮助,

谢谢, 卡洛斯

【问题讨论】:

    标签: visual-c++ usb hid wdk


    【解决方案1】:

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

    在 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
    

    卡洛斯

    【讨论】:

    • 问题是,WDK和SDK包含不同的头文件,所以你必须强制首先包含WDK头,因为WDK头包含。
    • 你还记得你用什么来做 lib 吗?因为它无法链接我从 WDK 调用的函数。我从 WDK 添加了 lib\win7\i386\ 但显然不起作用
    • 我刚刚遇到了这个问题。谢谢!
    • 运行 C:\Program Files\Microsoft SDKs\Windows\v7.1\Setup\ WindowsSdkVer.exe 并选择 sdk 7.1
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-13
    相关资源
    最近更新 更多