生活随笔
收集整理的這篇文章主要介紹了
vs2008 C++创建和调用标准DLL
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
為了共享代碼,需要生成標準的dll,本文將介紹在vs2008 C++生成及調用dll。
一、生成DLL
????生成一個名為FunDll的dll文件,對外函數為addl。
???step1:vs2008 環境下,文件-->新建項目,選擇visual c++,在選擇 “Win32 項目”,鍵入項目名稱,如 FunDll。如圖:
???
點擊下一步,勾選“DLL”和“導出空符號”,單擊“完成”
??
step 2,編寫功能函數
???執行完step1步驟后,在FunDll.h 和FunDll.cpp中會生成一些實例代碼,先把這些注釋掉,同時修改FunDll.h中的預處理宏定義為:
#ifdef FUNDLL_EXPORTS
#define FUNDLL_API extern "C" __declspec(dllexport)
#else
#define FUNDLL_API extern "C" __declspec(dllexport)
#endif
在FunDll.h中聲明add函數,在FunDll.cpp中實現該函數。修改完后代碼如下:
FunDll.h:
[cpp]?view plaincopy
//?下列?ifdef?塊是創建使從?DLL?導出更簡單的?? //?宏的標準方法。此?DLL?中的所有文件都是用命令行上定義的?FUNDLL_EXPORTS?? //?符號編譯的。在使用此?DLL?的?? //?任何其他項目上不應定義此符號。這樣,源文件中包含此文件的任何其他項目都會將?? //?FUNDLL_API?函數視為是從?DLL?導入的,而此?DLL?則將用此宏定義的?? //?符號視為是被導出的。?? ?? #ifdef?FUNDLL_EXPORTS?? #define?FUNDLL_API?extern?"C"?__declspec(dllexport)?? #else?? #define?FUNDLL_API?extern?"C"?__declspec(dllexport)?? #endif?? FUNDLL_API?int?_stdcall?add(int?plus1,int?plus2);?? FunDll.cpp
[cpp]?view plaincopy
#include?"stdafx.h"?? #include?"FunDll.h"?? ?? int?_stdcall?add(int?plus1,int?plus2)?? {?? ????int?ret?;?? ????ret=plus1+plus2;?? ????return?ret;?? }?? step3:添加 FunDll.def,修改內容為
[cpp]?view plaincopy
LIBRARY?"FunDll"?? EXPORTS?? ????add??
step 4,發布FunDll.dll文件
二,調用FunDll.dll
step1,新建C++控制臺程序,項目名稱為TestDll。
修改TestDll.cpp的代碼為:
[cpp]?view plaincopy
//?TestDll.cpp?:?定義控制臺應用程序的入口點。?? //?? ?? #include?"stdafx.h"?? #include??? #include??? #include??? ?? //定義MYPROC為指向一個返回值為int型的函數的指針?? typedef?int?(__stdcall?*MYPROC)(int?a,int?b);?? ?? int?_tmain(int?argc,?_TCHAR*?argv[])?? {????? ????HINSTANCE?hinstLib;?? ????MYPROC?ProcAdd;?? ????int?val1,val2,res;?? ????val1=4;?? ????val2=5;?? ????//?Get?a?handle?to?the?DLL?module.?? ????hinstLib?=?LoadLibrary(L"FunDll.dll");??? ?? ????//?If?the?handle?is?valid,?try?to?get?the?function?address.?? ????if?(hinstLib?!=?NULL)??? ????{??? ????????ProcAdd?=?(MYPROC)?GetProcAddress(hinstLib,?"add");??? ????????res=(ProcAdd)(val1,val2);?? ????????printf("%d\n",res);?? ????}?? ????????return?0;?? }??
step2,把FunDll拷貝至TestDll項目文件夾下。
step3,運行,測試通過。
總結
以上是生活随笔為你收集整理的vs2008 C++创建和调用标准DLL的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。