WinUSBを使用するアプリケーションをコンパイルします
質問
winusb.dllを使用してUSBデバイスと通信するアプリケーションを作成する過程にあります。これは、カーネルにドライバーとしてインストールされたWinUSB.SYSを介してデバイスとの通信を可能にするユーザーモードライブラリです。
このアプリケーションは、Visual Studio 2008を使用してC ++で書いています。
ヘッダーwinusb.hはWindows DDKにありますので、include "d: winddk 7100.0.0 inc ddk" d: winddk ddk」を追加します。次に、winusb.hを含むUSB.Hが見つからないというエラーがあります。USB.HはDDKにも別のディレクトリにあるため、「D: Winddk 7100.0.0 inc api」を追加します。インクルードディード。
その道を追加すると、すべてがトイレに入り、stdio.hのエラーと他の奇妙な場所の束をコンパイルし始めます。
このDLLを単純に使用するために、DDKビルドシステムとコンパイラを使用したくありません。これが、適切なドライバーを書く代わりにWinUSBを使用している主な理由の1つです。
winusb.dllとビジュアルスタジオを使用してアプリケーションを作成した人はいますか?
解決
私はクロスプラットフォームUSBライブラリの作成に取り組んでおり、DDKビルド環境を使用すると、ビルドプロセスがはるかに複雑になります。
WinUSBは、WinUSB.Sysをドライバーとしてロードするデバイスのクライアントアプリケーションで使用することを目的としています。ただし、ユーザーモードプログラムで使用するためにパッケージ化されたWinUSBヘッダーのバージョンはないようです(UMDFドライバーは含まれません)。
最終的に私がやったことは、winusb.hをDDKからプライベートディレクトリにサポートするいくつかのヘッダーをコピーすることでした。その後、ビルド中にそのディレクトリをインクルードディレクトリとして参照します。
これらは私がコピーするために必要なヘッダーです。
POPPACK.h
PSHPACK1.h
usb.h
usb100.h
usb200.h
winusb.h
winusbio.h
これらをプライベートディレクトリに含めて、DDKのwinusb.libにリンクしたら、Visual Studioでプロジェクトをコンパイルして実行することができました。
DDKリリース間でヘッダーが変更された場合に悪い可能性があるため、この方法をお勧めするかどうかはわかりませんが、Connectバグを開いて、MSを取得してクライアントで使用するWinUSBヘッダーのパッケージを作成できるかどうかを確認します。ユーザーモードアプリケーション。
他のヒント
歴史的にDDKとSDKは一緒にうまくプレイしていませんが、その問題はVistaがリリースされる前に修正されました。ただし、あるSDKの一部を別のSDKと混合しているようですが、これは良くありません。 DDKビルド環境を使用するか、少なくともDDK環境がセットアップして複製するパスを含めるパスを見てみましょう。 まさに VSプロジェクト設定で。
DDKビルド環境を使用しても、「MakeFileプロジェクト」を作成することでVS IDEを使用できることに注意してください。または、OSRやHollistechのDDKBuildツールのようなものを使用できる場合があります。
- OSRの: http://www.osronline.com/article.cfm?article = 43
- Hollistech's: http://www.hollistech.com/resources/ddkbuild/ddkbuild.htm
私はこれらを使用していないので、それらがどれだけうまく機能するかはわかりませんが、それらの類似の名前と使用にもかかわらず、それらは異なるツールであることに注意してください。