zhuav
驱动牛犊
驱动牛犊
  • 注册日期2001-12-04
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2071回复:6

关于hid的应用程序,错在哪里?

楼主#
更多 发布于:2002-01-04 09:18
我想做一个对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文件啊
谢谢大家,祝大家新年快乐
初学,请大家多多帮忙
acx
acx
驱动小牛
驱动小牛
  • 注册日期2001-04-28
  • 最后登录2012-05-07
  • 粉丝0
  • 关注0
  • 积分61分
  • 威望57点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-01-04 10:36
hid.lib setupapi.lib
很想你,身不由己……
zhuav
驱动牛犊
驱动牛犊
  • 注册日期2001-12-04
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于: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这个类型没有声明?
初学,请大家多多帮忙
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-01-05 08:59
一般有2种原因:
1.C++代码调用了C函数,或反之;
2.debug版本的app/dll调用了release版本的app/dll,或反之;
可能还有其他原因吧...
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
无心化语
禁止发言
禁止发言
  • 注册日期2001-03-23
  • 最后登录2018-06-01
  • 粉丝0
  • 关注0
  • 积分-103分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2002-01-05 11:07
用户被禁言,该主题自动屏蔽!
zhuav
驱动牛犊
驱动牛犊
  • 注册日期2001-12-04
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-01-05 15:00
还是不行,你们做过这种程序吗?是怎样调用HidD_GetHidGuid()
这个函数的?做这种程序时,要包括哪些头文件,lib文件和动态链接库文件呢?
我现在很着急啊
谢谢大家了,请大家帮帮忙
初学,请大家多多帮忙
zhuav
驱动牛犊
驱动牛犊
  • 注册日期2001-12-04
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
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的定义有关?
初学,请大家多多帮忙
游客

返回顶部