Скомпилирование приложения, которое использует Winusb
Вопрос
Я нахожусь в процессе написания приложения для связи с USB -устройствами с помощью winusb.dll. Это библиотека пользователя, которая позволяет общаться с устройством через Winusb.sys, установленную в качестве драйвера в ядре.
Я пишу это приложение в C ++ с Visual Studio 2008.
Заголовок winusb.h найден в Windows DDK, поэтому я добавляю Path "D: winddk 7100.0.0 inc ddk". Затем я получаю ошибку, что USB.H не может быть найден, что Winusb.H включает, USB.H также находится в DDK, но в другом каталоге, поэтому я добавляю "D: winddk 7100.0.0 Inc api" как Включите Dir.
Как только я добавляю этот путь, все идет в туалет, и я начинаю получать ошибки компиляции в stdio.h и кучу других странных мест.
Я действительно не хочу использовать систему сборки DDK и компилятор, чтобы просто использовать этот DLL, это одна из основных причин, по которой я использую Winusb вместо того, чтобы писать надлежащий драйвер.
Кто -нибудь построил приложение, используя Winusb.dll и Visual Studio?
Решение
Я работаю над написанием кроссплатформенной USB-библиотеки, и использование среды Build DDK усложнит мой процесс сборки гораздо более сложным.
Winusb предназначен для использования клиентскими приложениями для устройств, которые загружают Winusb.sys в качестве своего драйвера. Однако, похоже, нет версии заголовков WinusB, упакованных для использования в программах пользователя (не включая драйверы UMDF).
В итоге я сделал копирование нескольких заголовков, которые поддерживают Winusb.h из DDK и в частном каталоге, затем я ссылаюсь на этот каталог в качестве каталога включения во время сборки.
Это заголовки, которые мне нужны для копирования:
POPPACK.h
PSHPACK1.h
usb.h
usb100.h
usb200.h
winusb.h
winusbio.h
После того, как я включил их в частный каталог и связан с Winusb.Lib в DDK, я смог собрать и запустить свой проект в Visual Studio.
Я не знаю, рекомендую ли я этот метод, так как может быть плохо, когда заголовки меняются между выпусками DDK, но я открою ошибку Connect, чтобы увидеть, смогу ли я получить MS для создания пакета заголовков Winusb для использования в клиенте приложения пользователя.
Другие советы
Исторически DDK и SDK не играли хорошо вместе, но эта проблема была решена задолго до того, как Vista была выпущена. Тем не менее, кажется, что вы можете смешивать части одного SDK с другим, что не очень хорошо. Я бы либо использовал среду сборки DDK, либо, по крайней мере, посмотрел на путь включения, который устанавливает среда DDK. в яблочко В настройках проекта VS.
Обратите внимание, что вы можете использовать среду сборки DDK и по -прежнему использовать VS IDE, создав «Makefile Project», или вы можете использовать что -то вроде инструментов Ddkbuild от OSR или Hollistech:
- OSR: http://www.osronline.com/article.cfm?article=43
- Hollistech's: http://www.hollistech.com/resources/ddkbuild/ddkbuild.htm
Я не использовал их, поэтому я не уверен, насколько хорошо они работают, но обратите внимание, что, несмотря на их похожие имена и используются, это разные инструменты.