4

USB HID デバイスから読み込もうとしています。DLLImport hid.dll を使用して C# で実行する方法は知っていますが、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

OK、Windows SDKもアップグレードする必要があることをどこかで読みました。Microsoft Windows SDK v6.0Aがあり、Windows SDK v7.0をダウンロードしてインストールしました。しかし、今では 2 つの SDK があるように見えますか? Visual Studio で SDK のアップグレードを適切に行うにはどうすればよいですか?

大変お世話になりました。

ありがとう、カルロス

4

1 に答える 1

8

解決策を見つけました。なぜこれが機能しているのかわかりませんが、機能しています!:

Visual Studio で次の場所に移動します。

Tools->Options->Projects->VC++ Directories を選択し、Show directory for: include files を選択します。

次のフォルダーを追加します。

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 に答える