一、靜態鏈接庫
1.靜態鏈接庫的生成方法
在vc下建立一個新項目,項目類型選擇win32 static library,然後在項目中加入.h.cpp.c文件,編譯鏈接後就會生成一個靜態鏈接庫.lib文件。
如果想要取得盡量好的與平台無關性,則在.h文件頭加入extern "C",強制編譯器以C方法編譯.cpp的文件,生成的文件名不會像.cpp那樣給函數加上一堆附加信息。這樣其他的編譯器也可能識別他。但是這種方法只適合沒有用到C++重載等特性時才可以使用。
2.靜態鏈接庫的使用
把以上生成的.lib和.h文件加入到工程中去,在project選項中選擇setting,然後在link中添加*.lib,表示鏈接時用到他,在項目文件中加入#include "*.h"即可使用這個靜態鏈接庫
二、動態鏈接庫
1.動態鏈接庫的生成方法
在vc下建立一個新項目,項目類型選擇win32 dynamic link library,然後在項目中添加.h.cpp.c文件,編譯鏈接後就會生成.dll文件。
也可以在resource files文件夾下生成一個.def文件,文件內容如下:
LIBRARY *.dll
EXPORTS
dll中的函數名
這個def文件在編譯後會生成.lib文件,他是用於解析dll中函數用的。
2.動態鏈接庫的使用方法一
把.lib、.dll、.h三個文件都放到工程中去,在工程文件中加入#include "*.h"文件,選擇project的setting選項,然後在link中加入.lib文件,即可使用該庫。
3.動態鏈接庫的使用方法二
把.dll、.h三個文件都放到工程中去,在工程文件中加入#include <Windows.h>,做一個函數指針和一個handle,函數指針指向你要用的,handle類型為HMODULE,如示:
typedef void (*PFN)();
HMODULE hdll = ::LoadLibrary("mydll.dll");
PFN pfn = (PFN)::GetProcAddress(hdll,"helloWord");
(*pfn)();
::FreeLibrary(hdll); 這種方法不用在setting的link中加入lib。