之前在網上一直查不到關於把類打包成dll檔案的程式,今天自己寫了個測試程式,供大家參考
一、產生類的dll檔案
1.我是在vs2008上測試的,建立工程,在選擇建立何種類型的工程的時候,勾上application type中的dll;
2.添加一個標頭檔,命名為mydll.h,這個標頭檔就是我們測試時候要用介面檔案,代碼如下:
#ifndef _MYDLL_H_#define _MYDLL_H_#ifdef MYLIBDLL#define MYLIBDLL extern "C" _declspec(dllimport)#else#define MYLIBDLL extern "C" _declspec(dllexport)#endifclass _declspec(dllexport) testDll{//關鍵在這個地方,如果這個地方出錯,你所建立的dll檔案也就不能用了private:int a;public:testDll();void setA();int getA();};#endif
3.添加一個源檔案,命名為mydll.cpp,這個是類的實現檔案:
#include "stdafx.h"#include <iostream>#include "mydll.h"using namespace std;testDll::testDll(){cout<<"test dll"<<endl;a = 11;}int testDll::getA(){return a;}void testDll::setA(){a = 33;}
4.最後其他的檔案都是vs2008自動產生的,不用去修改,現在編譯下,產生dll和lib檔案;
二、測試自己產生的dll和lib檔案
1、建立工程,在選擇建立exe應用程式類型;
2、把剛才產生的dll和lib檔案拷到這個工程目錄下,另外把mydll.h也拷貝過來(關鍵);
3、忘了一點,在vs2008中,在linker中把dll 和lib的目錄加進去,還要把lib名字加入到addtional dependencies中;
4、在測試檔案的主程式中添加如下代碼:
#pragma comment(lib, "dllOne.lib")#include "stdafx.h"#include <iostream>#include "mydll.h"using namespace std;int _tmain(int argc, _TCHAR* argv[]){testDll* tmp = new testDll();cout<<tmp->getA()<<endl;tmp->setA();cout<<tmp->getA()<<endl;getchar();return 0;}
4,運行,測試下。