qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          創建動態鏈接庫Dll及測試用例

          我們就從新建工程開始:
            (1)打開VS2010,文件->新建->項目,選擇Win32項目
            (2)工程名叫做“Win32Dll”,在點擊確定后彈出的對話框中選擇Dll這一項,并勾選導入符號選項,點擊完成
            這樣一個創建Dll的工程就做好了,其實Dll的編寫就是類的一種封裝,格式完全可以按照C++中類的寫法去完成,下面我改寫了另一個老兄的例子:
            1.在Win32Dll.h中的類CWin32Dll 里添加:
          class WIN32DLL_API CWin32Dll {
          public:
          CWin32Dll(void);
          // TODO: 在此添加您的方法。
          private:
          int m_nVar;
          std::string m_strVar;
          public:
          void set(int );
          void printfValue();
          void set_str(const std::string &);
          void printf_str();
          };
          extern WIN32DLL_API int nWin32Dll;
          //這里尤其要注意,當你想創建一個非成員函數時
          WIN32DLL_API void printfValue(const int &);
          WIN32DLL_API int fnWin32Dll(void);
            2.以上類中尤其要注意非成員函數的的聲明,之后便是在Win32Dll.cpp中的函數實現
          CWin32Dll::CWin32Dll()
          {
          return;
          }
          void CWin32Dll::set(int v)
          {
          m_nVar = v;
          }
          void CWin32Dll::printfValue()
          {
          std::cout << m_nVar << std::endl;
          }
          void CWin32Dll::set_str(const std::string &str)
          {
          m_strVar = str;
          }
          void CWin32Dll::printf_str()
          {
          std::cout << m_strVar << std::endl;
          }
          void printfValue(const int &v)
          {
          std::cout << v << std::endl;
          }
            以上工作都做完后,進行編譯鏈接,在工程Debug下就可以看到我們生成的.Dll文件和.lib文件

           3.在同一個解決方案里新建一個Win32控制臺項目名叫TestWin32Dll
            在這里我們要用到我們在上個工程中生成的庫文件
            如下是TestWin32Dll.cpp中的實現:
          #include "stdafx.h"
          #include "../Win32Dll/Win32Dll.h"
          #pragma comment(lib,"D:/My Documents/Visual Studio 2010/Projects/Win32Dll/Debug/Win32Dll.lib")
          int _tmain(int argc, _TCHAR* argv[])
          {
          int v = 12;
          printfValue(v);
          CWin32Dll obj;
          obj.set(v);
          obj.printfValue();
          CWin32Dll obj2;
          obj2.set_str("haha");
          obj2.printf_str();
          CWin32Dll obj3;
          obj3.set_str("nono");
          obj3.printf_str();
          return 0;
          }
            運行一下試試!

          posted on 2014-06-25 11:23 順其自然EVO 閱讀(218) 評論(0)  編輯  收藏 所屬分類: 測試學習專欄

          <2014年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 新龙县| 汉沽区| 南和县| 防城港市| 阿图什市| 湘潭市| 孟津县| 精河县| 玛多县| 岚皋县| 二连浩特市| 阜城县| 肇庆市| 襄垣县| 泗洪县| 浏阳市| 卢龙县| 肥东县| 丰城市| 达州市| 成武县| 夏河县| 华亭县| 天气| 平凉市| 南澳县| 旬阳县| 岱山县| 孝义市| 金秀| 体育| 乌鲁木齐市| 香港| 沭阳县| 班玛县| 朝阳区| 中卫市| 裕民县| 昌平区| 承德市| 都安|