qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請?jiān)L問 http://qaseven.github.io/

          創(chuàng)建動(dòng)態(tài)鏈接庫Dll及測試用例

          我們就從新建工程開始:
            (1)打開VS2010,文件->新建->項(xiàng)目,選擇Win32項(xiàng)目
            (2)工程名叫做“Win32Dll”,在點(diǎn)擊確定后彈出的對話框中選擇Dll這一項(xiàng),并勾選導(dǎo)入符號選項(xiàng),點(diǎn)擊完成
            這樣一個(gè)創(chuàng)建Dll的工程就做好了,其實(shí)Dll的編寫就是類的一種封裝,格式完全可以按照C++中類的寫法去完成,下面我改寫了另一個(gè)老兄的例子:
            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;
          //這里尤其要注意,當(dāng)你想創(chuàng)建一個(gè)非成員函數(shù)時(shí)
          WIN32DLL_API void printfValue(const int &);
          WIN32DLL_API int fnWin32Dll(void);
            2.以上類中尤其要注意非成員函數(shù)的的聲明,之后便是在Win32Dll.cpp中的函數(shù)實(shí)現(xiàn)
          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;
          }
            以上工作都做完后,進(jìn)行編譯鏈接,在工程Debug下就可以看到我們生成的.Dll文件和.lib文件

           3.在同一個(gè)解決方案里新建一個(gè)Win32控制臺項(xiàng)目名叫TestWin32Dll
            在這里我們要用到我們在上個(gè)工程中生成的庫文件
            如下是TestWin32Dll.cpp中的實(shí)現(xiàn):
          #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;
          }
            運(yùn)行一下試試!

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

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

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 长宁县| 麟游县| 石屏县| 建水县| 惠来县| 永定县| 宜兰县| 太白县| 湖州市| 自治县| 女性| 来安县| 建湖县| 东阳市| 蛟河市| 资溪县| 临清市| 抚松县| 肇源县| 哈巴河县| 房山区| 布拖县| 松溪县| 饶阳县| 云龙县| 萝北县| 察隅县| 永安市| 永福县| 克拉玛依市| 贵州省| 吉林省| 修武县| 黎平县| 阳曲县| 安新县| 邵武市| 扬中市| 无锡市| 崇义县| 禹州市|