在項目開發中,我們經常會使用到動態庫(dll),要么是使用別人的動態庫,要么是將功能函數封裝為動態庫給別人用。那么如何封裝和使用動態庫呢?以下內容為你講解。
1.動態庫的封裝
以vs2010為例,我們在創建項目的時候,首先選擇win32控制台項目,然后在應用程序設置中選擇DLL.如下圖:
選擇win32控制台項目

選擇DLL

然后新建一個頭文件,這里取名為 mydll.h,添加如下代碼:
#ifndef __MYDLL_H
#define __MYDLL_H
#define DLL_API extern "C" _declspec (dllimport)
DLL_API int add(int a,int b);
#endif
新建源文件,取名為mydll.c,添加如下代碼
#include <stdio.h>
#define DLL_API extern "C" _declspec(dllexport) //注意,這里是export
int add(int a,int b) //api函數
{
return a+b;
}
編譯工程,在debug或者release文件夾下會生成*.dll和*.lib文件。至此,動態庫封裝完成。
2.動態庫的使用
將動態庫中的*.dll文件,*.lib文件還有*.h文件拷貝至項目工程的主函數文件所在目錄下,引用 動態庫頭文件 並在代碼中寫上如下 聲明:
#pragma comment (lib,"mydll.lib")
該行代碼將dll導入到 項目工程中,然后我們就可以調用dll里的函數了。
測試代碼如下:
#include "stdio.h"
#include "mydll.h" //引用動態庫頭文件
#pragma comment (lib,"Dll1.lib") //導入動態庫
int main(int argc, int* argv[])
{
int a = 10;
int b = 20;
printf("a+b = %d\n",add(a,b));
system("pause");
return 0;
}
這里需要注意一個問題
在dll中申請的內存,也要在dll中釋放
