以下方法是從DDK/SDK附帶的源程序中總結(jié)而來(lái),與各位朋友分享,希望能對(duì)您有點(diǎn)幫助。
開發(fā)工具和資源:visual c++6.0, windows server2003 SDK SP1,windows server2003 DDK SP1,DbgView
目標(biāo):在VC開發(fā)環(huán)境中使用SDK/DDK提供的編譯環(huán)境來(lái)編譯調(diào)試DLL/EXE/SYS(32bit/64bit)工程.
步驟:
1.安裝順序:VC6,SDK,DDK
2.新建一個(gè)系統(tǒng)環(huán)境變量:DDKROOT=C:\WINDDK\DDK2003(你的DDK安裝路徑,應(yīng)與"開始\程序\Developmet Kits\...\"中的編譯命令屬性設(shè)置一致),重起系統(tǒng)
3.注釋%DDKROOT%\bin\setenv.bat文件中的第269行,防止在VC調(diào)用它時(shí)改變當(dāng)前路徑.
4.創(chuàng)建buildsdk.bat和buildddk.bat分別設(shè)置SDK和DDK的編譯環(huán)境,以下為sdk在VC中配置編譯方法:
4.1操作VC菜單:[build]\[Configurations],添加以下六項(xiàng):
Win32_Debug
Win32_Release
x64_Debug
x64_Release
ia64_Debug
ia64_Release
刪除原來(lái)的Debug,Release項(xiàng)
4.2 操作VC菜單:[Project]\[Settings],點(diǎn)擊[General]標(biāo)簽,設(shè)置以上六項(xiàng)目的編譯命令
Settings for Build command line Rebuild all options
--------------------------------------------------------------------
Win32 Win32_Debug: buildsdk.bat w2k chk /a
Win32 Win32_Release buildsdk.bat w2k fre /a
Win32 x64_Debug buildsdk.bat chk AMD64 /a
Win32 x64_Release buildsdk.bat fre AMD64 /a
Win32 ia64_Debug buildsdk.bat chk 64 /a
Win32 ia64_Release buildsdk.bat fre 64 /a
*.bat的大致內(nèi)容就是調(diào)用setenv.bat來(lái)設(shè)置編譯環(huán)境的。大致如下:
......
REM Set Compiled Environment
call "%MSSDK%\SetEnv" %1 %2
echo Start to compiling and linking...
nmake
......
DDK的配置也差不多。
現(xiàn)在,您可以按下Rebuild/build/buildall來(lái)編譯鏈接您的工程了。在開發(fā)dll/exe程序時(shí),可以設(shè)置斷點(diǎn)來(lái)調(diào)試。在編譯時(shí),應(yīng)該同時(shí)選擇一個(gè)32/64的條件進(jìn)行編譯(如Win32Win32_Debug/Win32x64_Release),如果成功,其他版本也是成功的。在調(diào)試時(shí),只要選擇一個(gè)32bit條件進(jìn)行調(diào)試,成功后其他版本也是成功的。
個(gè)人要求: 熟悉makefile/sources的編寫規(guī)則,如果不熟悉,也沒(méi)關(guān)系,以下提供了一個(gè)sample作參考.
編譯器的選擇說(shuō)明請(qǐng)參考 (
http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/vccore/html/vcrefcompileroptionslistedalphabetically.asp)
鏈接器的選擇說(shuō)明請(qǐng)參考(
http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/vccore/html/_core_linker_reference.asp)
...............
附件是sample
說(shuō)明:
xdk.dsw: 工作區(qū),作用來(lái)管理myddk/mysdk/mydll,您應(yīng)該雙擊xdk.dsw來(lái)打開sample;
buildsdk.bat: 用來(lái)編譯SDK工程(編譯的32/64bit目標(biāo)),可以在VC的[Project]\[Settings]中看到對(duì)它的調(diào)用(當(dāng)前工程是mydll/mysdk時(shí));
buildsdkall.bat:用來(lái)編譯SDK工程(一次性完成編譯所有的ASCII/UNICODE的32/64bit目標(biāo)),可以在VC的[Project]\[Settings]中的[Win32 All]看到對(duì)它的調(diào)用(當(dāng)前工程是mydll/mysdk時(shí));
buildddk.bat: 用來(lái)編譯DDK工程(編譯的32/64bit目標(biāo)),可以在VC的[Project]\[Settings]中看到對(duì)它的調(diào)用(當(dāng)前工程是myddk時(shí));
buildddkall.bat: 用來(lái)編譯DDK工程(一次性完成編譯所有的32/64bit目標(biāo)),可以在VC的[Project]\[Settings]中的[Win32 All]看到對(duì)它的調(diào)用(當(dāng)前工程是mydll/mysdk時(shí));
buildall.exe:buildsdkall.bat/buildddkall.bat調(diào)用該程序進(jìn)行異步編譯(因?yàn)椴荒鼙WC同步編譯時(shí)編譯環(huán)境的改變).在buildsdkall.bat中,能發(fā)現(xiàn)以下方法:
REM set CALL_METHOD=call
set CALL_METHOD=..\buildall.exe
可以把它改成:
set CALL_METHOD=call
REM set CALL_METHOD=..\buildall.exe
看看有什么變化
proj_dir.mak: 定義了目標(biāo)文件的輸出路徑
OUTDIR_LIB = ..\lib
OUTDIR_EXE = ..\tar
OUTDIR =
dll/exe/sys的目標(biāo)路徑是.\tar;lib的目標(biāo)路徑是.\lib. 如果其子文件夾后綴為_u,表明是UNICODE目標(biāo).
ddk.txt: 這是份對(duì)DDK工程中sources文件的說(shuō)明書,可以使用DDK編譯和鏈接工具來(lái)編譯成sys/dll/exe目標(biāo).
xdk.rar 是sample的導(dǎo)出模板,它不包括.cpp/.c/.h文件,您可以替換成您的工程符號(hào)后就可以編譯了。
由于篇幅的限制,還有些地方?jīng)]能解釋清楚,如果您感興趣,可以與我聯(lián)系:
brike.huang@163.com;QQ24558102