阅读:2071回复:6
关于hid的应用程序,错在哪里?
我想做一个对hid设备的读写程序,环境是VC 6.00,可是在编译时,老是出错,问了一些朋友,知道是虽然在程序里调用了win32的函数,但是没将链接库加入项目,于是我在project->link中加入了seyupapi.lib,可是还有两个错:
UsbListen.obj : error LNK2001: unresolved external symbol \"unsigned char __stdcall HidD_GetAttributes(void *,struct _HIDD_ATTRIBUTES *)\" (?HidD_GetAttributes@@YGEPAXPAU_HIDD_ATTRIBUTES@@@Z) UsbListen.obj : error LNK2001: unresolved external symbol \"void __stdcall HidD_GetHidGuid(struct _GUID *)\" (?HidD_GetHidGuid@@YGXPAU_GUID@@@Z) Debug/CtrUsb.exe : fatal error LNK1120: 2 unresolved externals 而且我在我的项目里加入了我所能找到的所有的hid*.h文件。 我知道我走了不少弯路,现在我想问一下作hid的应用程序,到底需要加入哪些动态联接库,头文件和lib文件啊 谢谢大家,祝大家新年快乐 |
|
|
沙发#
发布于:2002-01-04 10:36
hid.lib setupapi.lib
|
|
|
板凳#
发布于:2002-01-04 11:49
现在是编译通过了,可是程序运行到一个地方就出错:
typedef void (* PGetHidGuid)(struct _GUID *);//定义指向函数的指针类型PGetHidGuid typedef unsigned char(*PGetAttributes)(void *,struct _HIDD_ATTRIBUTES *);//定义只想函数的指针类型PGetAttributes PGetHidGuid lpGetHidGuid; PGetAttributes lpGetAttributes; hUsb=LoadLibrary(\"hid.dll\"); lpGetHidGuid=(PGetHidGuid)GetProcAddress(hUsb,\"HidD_GetHidGuid\"); lpGetAttributes=(PGetAttributes)GetProcAddress(hUsb,\"HidD_GetAttributes\"); VendorID = 0x0000; ProductID = 0x0000; // 查找设备 // 本例程使用HID设备的API,它查找HID设备列表,找出与 // or ID 和 Product ID匹配的设备 ClassDeviceData =NULL; HIDDevice =NULL; deviceInfoData.cbSize =sizeof(deviceInfoData); // 从操作系统获取HIDs 的GUID //*HidD_GetHidGuid(&hidGuid); ??? lpGetHidGuid(&hidGuid); ???处为出错的地方,错误是: debug Error Program:d:\\myprogram\\program\\controlusb\\debug\\controlusb.exe module: file:i386\\chkesp.c line:42 the value od esp was not properly saved across a function call.this is usually a result of calling a function declred with one calling convertion with a function pointer declared with a different calling convention. 到底是什么错了啊?是不是GUID这个类型没有声明? |
|
|
地板#
发布于:2002-01-05 08:59
一般有2种原因:
1.C++代码调用了C函数,或反之; 2.debug版本的app/dll调用了release版本的app/dll,或反之; 可能还有其他原因吧... |
|
|
地下室#
发布于:2002-01-05 11:07
用户被禁言,该主题自动屏蔽! |
|
5楼#
发布于:2002-01-05 15:00
还是不行,你们做过这种程序吗?是怎样调用HidD_GetHidGuid()
这个函数的?做这种程序时,要包括哪些头文件,lib文件和动态链接库文件呢? 我现在很着急啊 谢谢大家了,请大家帮帮忙 |
|
|
6楼#
发布于:2002-01-05 16:43
这个问题已经解决了,好像是setupaip的错,我发现platfrom sdk
下的setupapi与VC98下的setupapi不一样,用platform sdk下的setupapi就没问题了。 而且添加的头文件为 extern \"C\" { #include <setupapi.h> #include \"hid.h\" #include \"hidpi.h\" #include \"hidsdi.h\" #include \"hidusage.h\" } 但是又有了一个新问题 PSP_DEVICE_INTERFACE_DETAIL_DATA在什么地方定义的? 我的程序在: ClassDeviceData =(PSP_DEVICE_INTERFACE_DETAIL_DATA)malloc(neededLength); //ClassDeviceData 为 PSP_DEVICE_INTERFACE_DETAIL_DATA 型 处弹出一个对话框,让我输入dbgheap.c.文件的路径,这是个什么文件,是不适与PSP_DEVICE_INTERFACE_DETAIL_DATA的定义有关? |
|
|