寫下怎麼配置vc的環境吧,不過網上這方面的文章很多了,我就不寫重複的東西了,講符號配置順延。
怎樣配置vc的環境來編譯驅動
最好用vc 7.0來編譯驅動,6.0的編譯器沒有7.0的編譯器好,編譯器用的越新越好,驅動和普通的程式沒有什麼區別
在開始講如何配置環境前,先想想自己要編譯程式,需要讓編譯器知道哪些東西?
1.標頭檔案和庫
路徑,如果是編譯應用程式,這個你就不用管了,預設的路徑已經配置好了
編譯驅動的話,多增加標頭檔案和庫的路徑,這裡用我自己的機器環境,具體的情況,根據你的安裝目錄來更改
include
d:/winddk/2600/inc/ddk/w2k
d:/winddk/2600/inc/w2k
libd:/winddk/2600/lib/w2k
如果要編譯xp下的驅動的話,把w2k更改為wxp
2.編譯選項(cl.exe 後面跟的引數)
debug模式
/nologo 不讓我們的設定(cl.exe 後面跟的引數)輸出到輸出視窗
/gz 採用stdcall呼叫方式,還有_fastcall, _cdecl _pascal呼叫方式
/mld 用的單執行緒除錯版執行庫
/w3 警告級別
/zi 建立.pdb檔案記錄所有除錯資訊
/od 不允許優化
/c 僅僅生成obj,需要link程式來連線
其中還有一些其他選項,可以在設定屬性頁裡面選擇,例如:
/fo"release/" 表示中間生成的obj存放的目錄
/fd"release2k/vc70.pdb" 表示程式名字資料庫檔案
還需要定義一些巨集,巨集才是最重要的,這個用來指導編譯器用哪些windows結構,怎麼來生成適合windows的**。
winver=0x500; 指定你需要編譯的驅動執行在2k下,0x501是xp,0x502是2k3,具體的看msdn
debug;_debug;dbg;除錯版本,有除錯輸出
unicode; 驅動是unicode,wchar會被定義為2個位元組
_x86_; 生成驅動必須的,如果是應用程式的話,對應 _windows 這個巨集
std_call; 採用 stdcall呼叫方式,不過這個在編譯選項裡面已經指定了
win32_lean_and_mean; 用來減少編譯時間的
nt_up; 你的驅動能執行在多處理器上,定義nt_up=0
release模式
/mld 變成 /ml 用單執行緒執行庫
/od 變成 ? 你自己看著辦吧,編譯驅動盡量不開優化,有以下優化選項
/os:更小的大小
/ot:更快的速度
/og:全域性優化
/gf 增加,合併重複的字串
/oi 使用內部函式替換一些函式的呼叫
內聯函式擴充套件的三種優化,使用內聯函式可以節省函式呼叫的開銷:
什麼都不加,表示不使用內聯
/ob1 僅函式定義前有inline或__inline標記使用內聯
/ob2 除了inline或__inline標記的函式外,編譯器「覺得」應該使用內聯的函式,都使用內聯
/oy 不使用幀指標,以提高函式呼叫速度
還有乙個總的優化選項,四選一
/od 不允許優化
/o1 更小的大小
/o2 更快的速度
/ox 完全優化
是不是都被這些優化搞暈了,link裡面也還有優化,呵呵
debug;_debug;dbg;把這三個巨集去掉
3.連線選項(link.exe 後面跟的引數)
debug模式
/out:"debug/???.sys" ---> /out:"release/???.sys"
還可以增加優化選項
/opt:ref 省略沒有引用的資料
/opt:icf 省略冗餘資料
也可以選擇生成pdb檔案,引數和上面的一樣(/debug "/pdb:debug/???.pdb"),方便自己在release模式下的源**級除錯,this is perfect!!!
ps:其中cl.exe link.exe裡面的引數還有很多,自己可以看著msdn學習
自己以前寫驅動的時候,不知道開了乙個什麼優化,把我寫的乙個函式給優化掉了,結果在其他模組調去呼叫這個函式,結果可想而知了。花了不少時間才發現這個問題。
看完後,請點下左邊的廣告,謝謝!!
配置VC 6 0下驅動程式編譯環境的步驟
作業系統 vmware 6.0 windows xp sp1 sp2 ddk版本 windows ddk 3790.1830 編譯環境 microsoft visual c 6.0 with sp6 2 build configurations去掉debug和release,新增mydriver c...
VC6 DDK編譯環境配置
1.使用vc6ide建立乙個makefile專案 testdrv 2.新增testdrv.h,testdrv.cpp並編寫 內容略 3.設定專案,選擇選單 project settings command line makedrv d winddk 2600 fre rebuild all opti...
VC的DDK編譯環境構建
2 在debug中建立check版的驅動 注 wxp 為windows xp 3 在release中建立free版驅動 4 匯入檔案 5 編譯工程 6 生成結果 生成objchk i386中的usbview.exe 說白了原理與在dos編譯一樣 如下為dos編譯方法 setenv即為setenv.b...