1.基本概念
dll(dynamic-link library),動態鏈結庫,是微軟實現共享函式庫的一種方式。動態鏈結,就是把一些常用的函式**製作成dll檔案,當某個程式呼叫到dll中的某個函式的時候,windows系統才把dll載入到記憶體中。也就是說當程式需要的時候才鏈結dll,所以是動態鏈結。
動態鏈結的好處是磁碟和記憶體的消耗減少,這也是dll的最初目的。同時dll也提供了模組化的函式庫。不過,dll也有缺點,就是版本衝突,比如不同的應用程式共享同乙個dll,而它們需求的是不同的版本,這就會出現矛盾,解決的方法是把不同版本的dll放在不同的資料夾中。
2.dll檔案的編寫(使用vs2013)
首先新建乙個dll專案:
然後新增乙個標頭檔案和乙個原始檔(mydll.h / mydll.cpp)
編寫標頭檔案,如下:
#ifndef _mydll_h_編寫原始檔:#define _mydll_h_
#define export_dll _declspec(dllexport)
extern"c
" export_dll int add(int a, int b); //
即 int add(int a,int b)
#endif
#include "編譯鏈結完成後會生成 mydll.dll和mydll.lib,這是最後的目標檔案mydll.h
"int add(int a, int
b)
原始檔的編寫正常,區別是標頭檔案的編寫,要加上 _declspec(dllexport),這樣就省去了編寫.def檔案 ,也可以加上 extern "c" 這樣通用性更強,因為c++和c的函式名轉換不一樣,詳細見末尾鏈結。
3.dll檔案的使用
dll檔案的使用有兩種方法,載入時動態鏈結和執行時動態鏈結
#include usingnamespace
std;
#pragma comment(lib,"mydll.lib")
extern"c
" _declspec(dllimport) int add(int a, int
b);int
main()
#include #include4.在python中使用dll需要安裝ctypesusing
namespace
std;
typedef
int(*addfun)(int a, int
b);int
main()
freelibrary(hdll);}}
使用方法:
標準的dll檔案編寫,簡單
標頭檔案 door.h extern c declspec dllexport int say something char sth door.cpp include include door.h int say something char sth messagebox null,sth hell...
如何用vc編寫dll檔案
如何用vc編寫dll檔案 動態連線庫最大的特點就是能節省磁碟空間.當多個程序共享同乙個dll的時候,記憶體中只有乙個dll的 通過對映來使各個程序得以呼叫.1.用vc建立乙個win32 dll 我們利用vc編寫dll有幾種方法.如果用vc建立乙個win32 dll 工程.那這個工程就應該只匯出c 的...
呼叫dll和編寫dll的幾種格式
一共兩種 extern c declspec dllexport dword sum int narg1,char nar 2 extern c 表示使用c的編譯方式編譯,c 格式 declspec dllexport 將乙個函式申明為匯出函式 就申明了乙個匯出函式 但是這中建立的dll的匯出函式序...