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

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

先看上次的结果:“自己定义之后,提示重复链接;不自己定义,包含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,就是使用了内部定义。

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

 

你可能感兴趣的:(Class)