LibUsbDotNet, без libusb-1.0.dll

Я пытаюсь перенести некоторый исходный код C (Linux), используя libusb, на C# (Windows). Я успешно установил LibUsbDotNet на Windows 7. Затем я добавил using MonoLibUsb, поскольку это выглядит как самый простой путь для портирования. Однако при запуске возникает исключение, говорящее, что libusb-1.0.dll отсутствует. И действительно, я не могу найти его в C:\Windows\System32. Итак, два вопроса

  1. Где я могу найти его? Поиск в Интернете не выявил никаких удобных установочных пакетов.
  2. Почему он не установлен как часть LibUsbDotNet? AFAICS его отсутствие делает половину LibUsbDotNet непригодной для использования.

person Magnus    schedule 14.08.2014    source источник
comment
Это winusb.dll в Windows. Используйте правильный проект, чтобы получить достойный старт.   -  person Hans Passant    schedule 14.08.2014
comment
Что ж, поскольку это код C, использующий libusb, который я переношу на C#, я надеялся, что мне не придется переходить на совершенно другой API. Но я думаю, было бы слишком просто, если бы все работало только в Windows.   -  person Magnus    schedule 14.08.2014
comment
Нет, WinUsbNet не кажется хорошим вариантом. Во-первых, я не могу заставить INF-создатель фактически создать INF-файл. Во-вторых, после использования zadig для подключения драйвера winusb к моему устройству я понял, что хотя весь мир, включая спецификацию USB, использует VID:PID, мне это никак не поможет с WinUsbNet. Почему-то мне нужно знать какой-то GUID (который выставлен в несуществующем INF-creator, а не в zadig) для того, чтобы найти интересующее меня устройство!   -  person Magnus    schedule 14.08.2014


Ответы (1)


Наткнулся на ту же проблему через год после вашего поста при компиляции программы на С# с использованием библиотеки LibUsbDotNet:

PS C:\src\FaultMonitor\FaultMonitor\bin\Debug> .\FaultMonitor.exe -u
An error occured while executing the proxy:
libusb-1.0.dll not found. If this is a 64bit operating system, ensure that the 6
4bit version of libusb-1.0.dll exists in the '\Windows\System32' directory.
at MonoLibUsb.MonoUsbSessionHandle..ctor()

Для тех, кто находится в аналогичном затруднительном положении, загрузите библиотеку libusb и извлеките содержимое ( вам понадобится 7zip). В извлеченном содержимом скопируйте \MS32\dll\libusb-1.0.dll в папку C:\windows\SysWOW64\ и скопируйте \MS64\dll\libusb-1.0.dll в папку C:\windows\System32\. После этого программа запустилась без проблем:

PS C:\src\FaultMonitor\FaultMonitor\bin\Debug> .\FaultMonitor.exe -u
[15-10-23.02:09:05][+] Device: VendorID: 4203, ProductID: 63, Address: 1
[15-10-23.02:09:05][+] Device: VendorID: -32530, ProductID: 33, Address: 2
person InfectedPacket    schedule 23.10.2015
comment
не решил проблему с моей стороны .. все еще та же проблема - person Dan Bradbury; 19.12.2018