VC6环境下USB编程链接错误解决办法

VC6环境下USB编程链接错误解决办法

背景介绍:

编程环境:Visual C++ 6.0 + SP6

操作系统:Windows XP Service Pack 3

提出问题:

MFC应用程序中引用经典的USBView源码过程中,出现如下错误:

usb.obj : error LNK2001: unresolved external symbol "unsigned long __stdcall CM_Get_Parent(unsigned long *,unsigned long,unsigned long)" (?CM_Get_Parent@@YGKPAKKK@Z)

usb.obj : error LNK2001: unresolved external symbol "unsigned long __stdcall CM_Get_Sibling(unsigned long *,unsigned long,unsigned long)" (?CM_Get_Sibling@@YGKPAKKK@Z)

usb.obj : error LNK2001: unresolved external symbol "unsigned long __stdcall CM_Get_Child(unsigned long *,unsigned long,unsigned long)" (?CM_Get_Child@@YGKPAKKK@Z)

usb.obj : error LNK2001: unresolved external symbol "unsigned long __stdcall CM_Get_DevNode_Registry_PropertyA(unsigned long,unsigned long,unsigned long *,void *,unsigned long *,unsigned long)" (?CM_Get_DevNode_Registry_PropertyA@@YGKKKPAKPAX0K@

Z)

usb.obj : error LNK2001: unresolved external symbol "unsigned long __stdcall CM_Locate_DevNodeA(unsigned long *,char *,unsigned long)" (?CM_Locate_DevNodeA@@YGKPAKPADK@Z)

../bin/Debug/ATSync.exe : fatal error LNK1120: 5 unresolved externals

分析问题:

CM_Locate_DevNode

CM_Get_DevNode_Registry_Property

CM_Get_Sibling

CM_Get_Child

CM_Get_Parent

这些函数都来自于同一个cfgmgr32.lib静态链接库中,

cfgmgr32.lib库应该是使用C语言进行编译的,所以在使用C++进行编程时,在引用cfgmgr32.h头文件时不能简单地使用include,即#include "cfgmgr32.h",而需要加入extern “C”的声明。

解决问题

#ifdef __cplusplus

extern "C"{

#include "cfgmgr32.h"

}

#endif

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

littletigerat

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值