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

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/littletigerat/archive/2010/08/10/5801751.aspx

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值