HidD_GetHidGuid
Впервые работаю с USB устройствами. Прочитал книгу Агурова.
Так вот беру из книги пример и перевожу с Delphi на C++ Builder.
{
...
TGUID HidGuid;
HidD_GetHidGuid(&HidGuid);
...
}
HidD_GetHidGuid определена в hidsdi.h, соответственно подключаю его в #include.
Выдает такое сообщение при компиляции
[Linker Error] Unresolved external '__stdcall HidD_GetHidGuid(_GUID *)' referenced from I:\WORK\TMP\GET_HID.OBJ
Подскажите пожалуйста где примерно искать корень ошибки.
либу подрубить надо. А какую - хз, в мсдн не написано :)
Поключи hid.lib,или импортируй функцию из hid.dll напрямую через GetProcAdress
Спасибо за советы, начал копаться и получается, что hud.lib у меня имеется только для Visual Studio. Сейчас пробую переконвертить или найти работоспособную.
Может кто-нибудь подтолкнуть к месту поиска?
Esli rewil problebu - podelis'. U menia toje samoe...
Спасибо за советы, начал копаться и получается, что hud.lib у меня имеется только для Visual Studio. Сейчас пробую переконвертить или найти работоспособную.
Может кто-нибудь подтолкнуть к месту поиска?[/QUOTE]
F1->Index->"Coff2Omf"->Ok
Gde mojno ska4at' COFF2OMF.EXE u menia ego netu v examples?
Получается следущее:
Прочитав статейку вот из этой темы http://borland.xportal.ru/forum/viewtopic.php?t=17845&highlight=%E8%F1%EF%EE%EB%FC%E7%EE%E2%E0%ED%E8%E5+%E1%E8%E1%EB%E8%EE%F2%E5%EA создал .lib файлы - т.е. TDUMP показал, что мол такие функции в нем определены, IMPLIB создал .lib. Для верности создал .lib и с Hid.dll и c Setupapi.dll всё это присоединил к проекту. Всё, компилится(если не использовать функцию HidD_GetHidGuid(&HidGuid)) НО, как только мы вызываем её:
[Linker Error] Unresolved external '__stdcall HidD_GetHidGuid(_GUID *)' referenced from I:\WORK\TMP\4\UNIT1.OBJ
опять то же самое, начал крутить вертеть и нашел следущее:
если вызывать так - HidD_GetHidGuid(HidGuid) то выдает следущее:
[C++ Error] Unit1.cpp(22): E2034 Cannot convert '_GUID' to '_GUID *'
[C++ Error] Unit1.cpp(22): E2342 Type mismatch in parameter 'HidGuid' (wanted '_GUID *', got '_GUID')
т.е., получается, вроде как эти функции Builder видит из этой библиотеки, ну т.е. он видит что идёт вызов несоответствующий объявленному в .dll
Подскажите как же такое может быть - видеть, видит, но при вызове ломается?
http://slil.ru/23202598 - COFF2OMF.EXE
P.S.
А почему в Examples? В папке CBuilder6/Bin лежит COFF2OMF.EXE
Такое впечатление что Builder 6 с++ не понимает етой dll ки, даже не может импортировать.
Что делать??? Может кто знает....
Саму длл-ку я взял из папки Винды....
Постоянная загрузка одной задачей принесла свои результаты - заработало!
По порядку:
- Необходимо программой IMPLIB.EXE создать .lib файлы, необходимые Borland'у. Внимание: здесь долго пытались понять почему вылетают различные шибки - пишите полные пути к файлам. Пример:
C:\IMPLIB.EXE I:\work\tmp\4\hid.lib I:\work\tmp\4\hid.dll
Аналогично бились и с TDUMP.EXE, полные пути помогли.
- Добавляем полученные .lib файлы в наш проект: Project->Add To Project...
- В .h файле нашего проекта добаляем заголовочные файлы через директиву extern:
extern "C"{
#include "setupapi.h"
#include "hidsdi.h"
}
И наслаждаемся!
Но HidD_GetHidGuid и остальные функции работают, КРОМЕ HidD_Hello, вот тут тоже встали, ну ничего, и это сломаем...