DLL學習系列之二 非MFC動態鏈結庫

2021-04-23 05:52:07 字數 979 閱讀 2253

使用動態鏈結庫的好處這裡就不提了,使用動態鏈結庫往往需要兩個檔案乙個引入庫.lib檔案,乙個.dll檔案。其中引入庫檔案包含匯出函式和變數的名字,.dll檔案中儲存實際的函式和資料。在編譯的時候,只將.lib檔案鏈結.exe檔案中去。.dll檔案在執行時才被鏈結,所以叫做動態鏈結庫。

下邊給出乙個隱式載入的例子:

新建乙個win32 dynamic-link library project,含有dll.h和dll.cpp兩個檔案:

//dll.h

#ifndef dll_h

#define

dll_h

extern"c

"int

__declspec(dllexport)add(

intx, 

inty);

#endif

//dll.cpp

#include

"dll.h

"intadd(

inta, 

intb)

編譯生成兩個檔案dll.lib和dll.dll。下面測試這個dll。新建乙個工程dlltest。

//dlltest.cpp

#include 

<

stdio.h

>

extern"c

"_declspec(dllexport)add(

inta, 

intb);

intmain()

然後將dll.lib和dll.dll兩個檔案拷貝到工作目錄,並新增到工程檔案中。如果從編譯器中執行程式就要在工作目錄下包含dll.dll,如果從dubug資料夾下執行exe檔案就必須在exe檔案同目錄下含有dll.dll。dll.lib檔案一定放在工作目錄下,因為是要和其他檔案鏈結的。如果鏈結報錯,嘗試在project-setting-link新增dll.lib一項。編譯通過後執行程式就可以看到我們正確使用了庫中的加法。

下面介紹顯示的載入動態鏈結庫的例子:

未完待續。。。

Sqlmap學習系列之二

1 v 按照官方文件說明,v 意為 verbose verbosity level 0 6 default 1 即 詳細等級包括0 6級,預設為1級 在測試語句最後以 v 等級 出現。經指正,詳細等級是指測試結果的輸出的詳細程度。2 level 按照官方文件說明,level level level ...

leetcode動態規劃系列題解之二

暴力破解思路如下 1 先確定左上角的頂點,從左到右遍歷行列數 行數假設為m,列數假設為n 此時確定乙個矩形的左上角的頂點。記錄該頂點為 i,j 2 以 i,j 為矩形的左上角頂點,從j 1遍歷到n,如果點為0,則繼續,如果為1,則進行下一步。假設為1的點為 i,k 3 以 i,j 為矩形的左上角頂點...

MFC學習筆記12 建立動態DLL庫

新建 win32 dll 專案。新增項 新建 標頭檔案 dll.h 新增項 新建 cpp檔案 dll.cpp dll.h pragma once ifdef dll implement define dll api declspec dllexport else define dll api dec...