dll的建立
我說的結論都是自己試驗過的,但還是帶有偶然性,中途大家不信的地方可以自己試試,我有寫錯的地方請提醒我,看到會回複
一、随便建立項目
改項目屬性:配置屬性->正常->配置類型為dll
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiclRnblN2XjlGcjAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL90zda5mTzoleG1mWrZkMMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL2cTM3MjMzITMwMzMwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
二、建立一個.c(或者.cpp) 和.h檔案(源檔案和頭檔案的名字不一樣不要緊)
.c檔案
必須包含.h檔案(不包含的話,可以成功生成dll,但是在其他項目中不能用,可以自己試一試)
和平常一樣寫函數,下面是例子随便舉得,傳回值以及參數根據自己的需要寫
void function1( ) {};
void function2( ) {};
......
.h檔案
聲明一下函數就可以了,有多少聲明多少個
__declspec(dllexport) void function1( );
__declspec(dllexport) void function2( );
......
這樣做的dll,在其他的程式不管是c++還是c都是可以使用的,兩種方法都可以,具體使用方法看後面。這時不能加,也加不了extern “C”,加了就無法通過編譯
如果你上面選用的是.cpp, 則需要加上一個extern “C”,否則不管其他的程式是c++還是c,都用不了這個dll
extern "C"
__declspec(dllexport) void function1( );
__declspec(dllexport) void function2( );
三、dll是不能運作的,點生成就行了
項目檔案夾裡面會出現兩個重要的東西分别是.lib 和.dll,别忘了上面的.h檔案也很重要
dll的靜态使用
一、把.h .dll .lib複制到要用的項目下
二、.h添加到頭檔案 ,再#include這個頭檔案
三、.lib添加間到資源檔案,或者
改項目屬性:配置屬性->連結器->輸入->附加依賴項,在這個裡面添加lib的名字,這裡不要畫蛇添足不需要寫路徑,因為第一步已經把這些東西複制到項目檔案夾中了
四、已經可以使用自己制作的dll中的函數了
dll的動态使用
一、把 .dll 複制到要用的項目下
二、加載dll,通過函數名獲得自己要用的函數的位址,通過函數指針使用要用的函數
#include <Windows.h>
HINSTANCE hLibrary=LoadLibrary(L" .dll");
void (*p)() = GetProcAddress(hLibraray, "a");//a表示函數名
a();//p是a的函數指針,a這個例子,無傳回類型,無參數
三、解除安裝dll