Скомпилирование приложения, которое использует Winusb

StackOverflow https://stackoverflow.com/questions/1492982

  •  18-09-2019
  •  | 
  •  

Вопрос

Я нахожусь в процессе написания приложения для связи с 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:

Я не использовал их, поэтому я не уверен, насколько хорошо они работают, но обратите внимание, что, несмотря на их похожие имена и используются, это разные инструменты.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top