vs2008中安裝配置winpcap及相關錯誤解析

 

說明:vs08在安裝的時候提供一些默認的.h文件,比如stodio.h,就是在includ目錄下的文件,我不知道叫什麼,本文暫且中叫vs源文件。

網上找到的步驟:

1.安裝WinPcap_4_0_2.exe,即可以抓包的驅動程序
2。下載winpcap開發包WpdPack_4_0_2.zip,裏面有關開發相關的函數庫以及例子
3. 打開.net平臺,設置環境目錄;在菜單:工具->選項;彈出的選項窗體左邊點擊:項目和解決方案->VC++目錄;在右邊:“顯示以下內容的目錄”標籤下面的 下拉框中找到“包含文件”,然後對應到第二步下載開發包的Include目錄;在同一下拉框中找到“庫文件”,然後對應到第二步下載開發包的lib目錄;
4. 設置編譯條件;在項目屬性頁中:配置屬性->C/C++->預處理器->預處理器定義,增加;WPCAP;HAVE_REMOTE;每 一個預定義符用";"隔開;在項目屬性頁中:配置屬性->鏈接器->命令行->附加選項對應的文本框中增加:“wpcap.lib ws2_32.lib”;


 
我在調試時出現了兩個錯誤:
1.fatal error C1083: Cannot open include file: 'sys/time.h': No such file or directory
2.error C3163: '_vsnprintf': attributes inconsistent with previous declaration
錯誤原因及我的解決過程
總的來說,應該就是因爲在選擇新建一個project時候,我們大部分會選擇Empty Project。這個是在VC6.0沒問題的,但是在vs2008如果選擇這個的時候,vs會認爲這不是一個WIN32程序,也就是沒有預定義WIN32所以在pcap.h代碼中:
#if defined(WIN32)
  #include <pcap-stdinc.h>
#elif defined(MSDOS)
  #include <sys/types.h>
  #include <sys/socket.h>  /* u_int, u_char etc. */
#else /* UN*X */
 #include <sys/types.h>
 #include <sys/time.h>
#endif /* WIN32/MSDOS/UN*X */
在Empty Project中沒有定義WIN32,因此默認爲UNIX環境,然後會出現錯誤1。
這個是比較容易發現的一個錯誤,網上有人說強行修改,如果強行修改的話表面上可以解決錯誤1,但是在一定條件下(比如用到了某個變量類型)仍然會出現錯誤2.
網上有錯誤2的解決方案(http://blog.163.com/cp7618@yeah/blog/static/702347772011217102525289/
也是強行修改vs源文件解決問題。
我沒找到這個解決方案要修改的代碼段,但是我覺得修改stdio.h等頭文件不是一個好的方法。
於是我試圖自己定義了Win32,但是仍然是修改庫文件,而且也會出現錯誤。
查資料突然看到在創建project時,我們可以選擇Win32環境下的project。試了一下,問題解決,並且不需要修改任何vs源文件。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章