(已解決!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