天天看點

驅動程式中使用CPPUnit

最近研究了一下如何将CPPUnit應用到驅動開發中,下面是一些實作步驟! 我的環境是WDK 6801,安裝在C:/WinDDK目錄下。IDE環境使用的是Visual Studio 2005。

1. CPPUnit首先需要為WDK特别編譯一個版本,使用如下方式配置Visual Studio環境:

   A. Visual Studio -> Tools -> Options -> Projects and Solutions -> VC++ Directories

     在Include files中添加如下清單,并将它們置頂:

     C:/WinDDK/6801.0/inc/api  <-将C:/WinDDK/6801.0替換成适當的路徑

     C:/WinDDK/6801.0/inc/crt

     C:/WinDDK/6801.0/inc/ddk

     C:/WinDDK/6801.0/inc/api/crt/stl60

   B. 在相同界面下Library files中加入下面的清單,也将它們置頂

     C:/WinDDK/6801.0/Lib/Crt/i386

     C:/WinDDK/6801.0/Lib/wnet/i386  <- Windows 2003使用

 NOTE:使用這些設定,Visual Studio也可以用來編譯WDK驅動程式。

2.打開cppunit工程,然後進行如下設定:

   Project Properties -> C/C++ -> Advanced ->Calling Convention 設為 "__stdcall(/Gz)"

     *相應的,測試程式也要使用同樣的方式 WDK預設就是stdcall.

   Project Properties -> C/C++ -> Code Generation -> Runtime Library 設為 "Multi-threaded (/MT)"

     *注意此處的不同。它會決定後面所需要使用的靜态庫,詳細的内容可以Google下。

3. 編譯一份cppunit的Release版本。

   *最好将它拷貝起來,以和其它類型的cppunit庫區分開來。

CPPUnit就算準備好了,現在開始建立一個測試工程。

4. 在sources檔案中設定如下:

  CPPUNITDIR=C:/project/cppunit  <- 指向CPPUnit的工作目錄

  TARGETNAME=UnitRunner <- 目标程式名稱

  TARGETPATH=obj 

  TARGETTYPE=PROGRAM

  UMTYPE=console

  UMENTRY=main

  USE_LIBCMT = 1  <- 我們使用的是/MT,是以這裡要使用LIBCMT, 不能使用MSVCRT (/MD)

  USE_STL=1  <- 我們需要使用STL,主要是CPPUnit引用的。

  STL_VER=60 <- 需要和VS中的STL版本保持一緻。這裡是STL60

  C_DEFINES=$(C_DEFINES) /D_STL60_

5. 将CPPUnit的路徑加入到INCLUDES中

  INCLUDES=$(DDK_INC_PATH);$(INCLUDES);$(CPPUNITDIR)/include;

6. 将cppunit庫加入到Library清單中:

  TARGETLIBS=$(TARGETLIBS) /

  ......

  $(CPPUNITDIR)/lib/WDK/cppunit.lib

  *其它庫,視項目需要而定。

7. 確定源正件也正常時,開始編譯。

*注意,因為我們隻有編譯一個Release版本。

下一篇: 工具

繼續閱讀