GUID的外部定义和内部定义

(已解决!GUID的外部定义和内部定义)VC编译错误:error LNK2001: unresolved external symbol _GUID_DEVINTERFACE_USB_DEVICE

编译错误 2008-10-08 09:56:25 阅读319 评论0 字号:

兜了一大圈后,回到原点,再次思索如何解决。

先看上次的结果:“自己定义之后,提示重复链接;不自己定义,包含initguid.h,又提示其他的GUID重复定义;不自己定义,也不包含,提示没有链接到lib。”

 

此次,再次编译时,我想到一个折衷的办法,既能保证“其他的GUID”不重复定义,又能保证GUID_DEVINTERFACE_USB_DEVICE被定义。如下:
#include <winioctl.h>
#include <setupapi.h>
#include   <initguid.h>  

DEFINE_GUID(GUID_DEVINTERFACE_USB_DEVICE,  
   0xA5DCBF10L,   0x6530,   0x11D2,   0x90,   0x1F,   0x00,   0xC0,   0x4F,   0xB9,   0x51,   0xED);  
#define   GUID_CLASS_USB_DEVICE                       GUID_DEVINTERFACE_USB_DEVICE  

 

上述代码的原理很简单。在调用其他的GUID时,即包含winioctl.h文件时,不使用INITGUID,外部定义;在调用其他的GUID之后,再包含initguid.h,即,定义INITGUID,此后再定义自己的GUID,就是使用了内部定义。

如此一来,同时使用内部定义和外部定义,完美解决!

://blog.csdn.net/lxiongh/archive/2010/03/05/5350329.aspx
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值