原創(chuàng)|其它|編輯:郝浩|2009-08-28 10:19:48.000|閱讀 1183 次
概述:從官方下載了較新的開發(fā)包WpdPack_4_0_2,里面有不少的例子。不過都是VC6.0的,而我想要開發(fā)的環(huán)境是VS2008。解壓后有5個文件夾,其中Lib和Include兩個要包含在工程中。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
WinPcap的使用說明網(wǎng)上也有不少,這里僅作學(xué)習(xí)過程的記錄。
首先,從官方下載了較新的開發(fā)包,里面有不少的例子。不過都是VC6.0的,而我想要開發(fā)的環(huán)境是VS2008。解壓后有5個文件夾,其中Lib和Include兩個要包含在工程中。方法如下:1)項目->屬性->配置屬性->鏈接器->常規(guī)->附加庫目錄,加入Lib所在路徑;2)項目->屬性->配置屬性->鏈接器->輸入->附加依賴項,加入wpcap.lib與Packet.lib兩個靜態(tài)鏈接庫;3)項目->屬性->配置屬性->C/C++->常規(guī)->附加包含目錄,加入Include所在路徑。
接著,我參考了里頭的步驟開始獲取網(wǎng)絡(luò)驅(qū)動。結(jié)果很不幸地出現(xiàn)了一些莫名其妙的錯誤:1>c:\program files\microsoft sdks\windows\v6.0a\include\netioapi.h(155) : error C2146: 語法錯誤 : 缺少“;”(在標(biāo)識符“PhysicalMediumType”的前面)。錯誤發(fā)生在 NDIS_PHYSICAL_MEDIUM PhysicalMediumType 這一句上。網(wǎng)上有一些解析,說這是因為VS2008對ntddndis.h里頭的定義比較新,WinPcap的頭文件在對ntddndis.h的編譯過后沒有獲得相應(yīng)的定義,固N(yùn)DIS_PHYSICAL_MEDIUM不是一個結(jié)構(gòu)或類,所以就產(chǎn)生了缺少“;”這樣奇怪的錯誤。把netioapi.h里的#include <ntddndis.h>改為#include "ntddndis.h"后終于通過編譯,改為" "后項目則從包括的文件中先查找頭文件的定義,若找不到再從默認(rèn)路徑中查找。(網(wǎng)上查到的解析是:<>先去系統(tǒng)目錄中找頭文件,如果沒有在到當(dāng)前目錄下找。而""首先在當(dāng)前目錄下尋找,如果找不到,再到系統(tǒng)目錄中尋找。)因此我猜想Include文件夾里頭的ntddndis.h有NDIS_PHYSICAL_MEDIUM的定義。再查看了一下Include文件夾里的ntddndis.h,也沒發(fā)現(xiàn),但在查看c:\program files\microsoft sdks\windows\v6.0a\include\下的ntddndis.h時竟然發(fā)現(xiàn)有NDIS_PHYSICAL_MEDIUM的定義!!! 是不是我對系統(tǒng)目錄的概念理解有誤呢?假如把Include里的頭文件刪了,再改回<>可以通過編譯的話,那么就說明在用<>的情況下查找的順序應(yīng)該是先查Include文件夾再查默認(rèn)路徑。一試之下竟然應(yīng)驗了。于是再去搜了一個尖括號與雙引號的區(qū)別,這個解析得比較清晰:雙引號時,系統(tǒng)先在引用被包含文件的源文件所在的文件目錄中尋找要包含的文件,若找不到,再按系統(tǒng)指定的標(biāo)準(zhǔn)方式檢索其他目錄。尖括號時,不檢查原文件所在的文件目錄,而直接按系統(tǒng)標(biāo)準(zhǔn)方式檢索文件目錄。這樣子就能解析發(fā)生了什么問題,因為發(fā)生錯誤的是在netioapi.h的頭文件里,而這個頭文件是在c:\program files\microsoft sdks\windows\v6.0a\include\下,所以在用<>時項目沒有直接查與netioapi.h同一目錄下的ntddndis.h,而是直接查到了Include頭上。
把錯誤排除了之后,程序正常運(yùn)行,我的電腦裝了個1000M網(wǎng)卡,所以搜出了3個驅(qū)動,第一個是VPN的,然后才是兩個物理網(wǎng)卡。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:博客園