Estoy tratando de leer desde un dispositivo USB HID, yo sé cómo hacerlo en C# usando DLLImport hid.dll pero quiero hacerlo desde C++, de esta manera no tengo que declarar todas las estructuras, etc, y sólo incluir los encabezados de los archivos.

Lo que he descargado el WDK y, a continuación, cuando se incluyen las cabeceras de los archivos y la vinculación de las bibliotecas estoy recibiendo un montón de errores:

#include <windows.h>

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

int main(){

}

Errores (6 de 163):

Error   1   error C2065: 'PASSIVE_LEVEL' : undeclared identifier    c:\winddk600.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:\winddk600.16385.1\inc\api\hidpi.h  303 driver
Error   3   error C2146: syntax error : missing ';' before identifier 'NTSTATUS'    c:\winddk600.16385.1\inc\api\hidpi.h  303 driver
Error   4   error C2143: syntax error : missing ';' before '__stdcall'  c:\winddk600.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:\winddk600.16385.1\inc\api\hidpi.h  303 driver
Error   6   error C2377: 'NTSTATUS' : redefinition; typedef cannot be overloaded with any other symbol  c:\winddk600.16385.1\inc\api\hidpi.h  303 driver

OK por lo que he leído por ahí que tengo que actualizar el SDK de Windows también, tuve el SDK de Microsoft Windows v6.0A, he descargado e instalado el SDK de windows v7.0. Pero luego parece que tengo dos SDK ahora? Cómo puedo hacer correctamente el SDK de actualización en visual studio?

Agradezco mucho tu ayuda,

Gracias,
Carlos

OriginalEl autor Carlos Dubus | 2010-07-26

1 Comentario

  1. 8

    He encontrado una solución, no sé por qué esto funciona, pero lo es!:

    En Visual Studio, vaya a:

    Herramientas->Opciones>Proyectos->Directorios de VC++ y, a continuación, Mostrar directorios para: incluir archivos.

    Agregar este carpetas:

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

    Ahora, aquí está el truco, que resolvía el problema para mí y no sé por qué, porque parece extraño, pero aquí está:

    C:\WinDDK\7600.16385.1\inc\ddk -> Este directorio tiene que ser el primer directorio en la lista!

    C:\WinDDK\7600.16385.1\inc\api -> Este directorio tiene que estar por ENCIMA de «$(WindowsSdkDir)\include» PERO por DEBAJO de «$(VCInstallDir)incluyen»

    Ejemplo:

    C:\WinDDK600.16385.1\inc\ddk
    $(VCInstallDir)include
    $(VCInstallDir)atlmfc\include
    C:\WinDDK600.16385.1\inc\api
    $(WindowsSdkDir)\include
    $(FrameworkSDKDir)include

    Carlos

    El problema es, que el WDK y el SDK contiene diferentes archivos de encabezado, por lo que tienes que forzar el WDK encabezados para ser incluido en primer lugar, para WDK encabezado incluye.
    ¿Recordado por casualidad lo ha usado para lib ? Porque no se puede vincular una función que me llaman de WDK. He añadido lib\win7\i386\ de WDK, pero al parecer no está funcionando
    ¡Mil millones de gracias, solucionado mi problema;)
    Yo sólo corría en contra de EXACTAMENTE este problema. GRACIAS!
    ejecutar C:\Program Files\Microsoft SDKs\Windows\v7.1\Setup\ WindowsSdkVer.exe y elegir sdk 7.1

    OriginalEl autor Carlos Dubus

Dejar respuesta

Please enter your comment!
Please enter your name here