from:https://blog.csdn.net/goodluckmt/article/details/52691297
1、動態庫DLL中的類或者函數有時候要被其他的庫調用,因此需要被其他庫調用的類或者函數需要進行導出。
2、首先編寫需要導出的DLL,新建一個工程設置應用程序類型為DLL
3、類的代碼如下
頭文件
- #pragma?once ?
- #define?EX_PORT?__declspec(dllexport) ??
- using?namespace?std; ?
- extern?"C"?int?__declspec(dllexport)??subVal(int?a,?int?b);??
- ??
- class?EX_PORT?exportClass ?//#define?EX_PORT?__declspec(dllexport)?
- {??
- public:??
- ????exportClass();??
- ????~exportClass();??
- ????int?addVal(int?a,?int?b)??
- ????{??
- ????????return?a?+?b;??
- ????}??
- };??
- #include?"stdafx.h"??
- #include?"exportClass.h"??
- #include?<iostream>??
- ??
- int?subVal(int?a,?int?b)??
- {??
- ????return?a?-?b;??
- }??
- exportClass::exportClass()??
- {??
- ????cout?<<?"oh,myGod"?<<?endl;??
- ????//AfxMessageBox(_T("oh,yes"));??
- }??
- ??
- exportClass::~exportClass()??
- {??
- } ?
5、然后在主程序之中就可以引用了。
- //?mainProess.cpp?:?定義控制臺應用程序的入口點。??
- //??
- ??
- #include?"stdafx.h"??
- #include?"exportClass.h"??
- #include?<stdio.h>??
- //#pragma?comment(lib,"Dllexport1.lib")?//這句話和在附加依賴項中添加lib文件的作用一樣,所以在這里就可以不添加了?
- int?_tmain(int?argc,?_TCHAR*?argv[])??
- {??
- ????exportClass?ex;??
- ????int?c?=?ex.addVal(5,?6);??
- ????CString?str;??
- ????str.Format(_T("%d"),?c);??
- ????AfxMessageBox(str);??
- ????int?d?=?subVal(5,?6);??
- ??????
- ????return?0;??
- }??
- 1、#pragma?comment(lib,"Dllexport1.lib")?這句話和在附加依賴項中添加lib文件的作用一樣,所以在這里就可以不添加了。??
- extern?"C"?int?__declspec(dllexport)?類似的標志的常規函數是無法被其他程序調用