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
發佈了5 篇原創文章 · 獲贊 5 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章