建立和使用動態鏈結庫

2021-04-16 23:07:47 字數 3980 閱讀 4649

在本演練中,您將建立乙個動態鏈結庫 (dll),其中包含可供其他應用程式使用的有用例程。使用 dll 是一種重用**的絕佳方式。您不必在自己建立的每個程式中重新實現這些例程,而只需對這些例程編寫一次,然後從需要該功能的應用程式引用它們即可。

本演練使用本機 c++。有關使用本機 c++ 建立靜態庫的演練,請參見 演練:建立和使用靜態庫。有關使用面向公共語言執行庫的 visual c++ 的演練,請參見演練:建立和使用託管程式集。

本演練涵蓋以下內容:

1,建立新的動態鏈結庫 (dll) 專案

2,向動態鏈結庫新增類

3,建立引用動態鏈結庫的應用程式

4,在控制台應用程式中使用類庫的功能

5,執行應用程式

先決條件

本主題假定您具備 c++ 語言的基礎知識。

建立新的動態鏈結庫 (dll) 專案

1, 從「檔案」選單中,選擇「新建」,然後選擇「專案…」。

2, 從「專案型別」窗格中選擇「visual c++」下的「win32」。

3, 從「模板」窗格中,選擇「win32 控制台應用程式」。

4,為專案選擇乙個名稱,如「mathfuncsdll」,並將其輸入「名稱」字段。為解決方案選擇乙個名稱,如「dynamiclibrary」,並將其   5,輸入「解決方案名稱」字段。

5,按「確定」啟動 win32 應用程式嚮導。在「win32 應用程式嚮導」對話方塊的「概述」頁中,按「下一步」。

6,從「win32 應用程式嚮導」中的「應用程式設定」頁中,選擇「應用程式型別」下的「dll」(如果可用),或者選擇「控制台應用程式」(如果「dll」不可用)。某些版本

的visual studio 不支援使用嚮導建立 dll 專案。您可以稍後對此進行更改,以將專案編譯為 dll。

7,從「win32 應用程式嚮導」的「應用程式設定」頁中,選擇「附加選項」下的「空專案」。

8,按「完成」建立專案。

向動態鏈結庫新增類

若要為新類建立標頭檔案,請從「專案」選單中選擇「新增新項…」。將顯示「新增新項」對話方塊。從「類別」窗格中,選擇「visual c++」下的「**」。從「模板」窗格中,選擇「標頭檔案(.h)」。為標頭檔案選擇乙個名稱,如「mathfuncsdll.h」,並按「新增」。將顯示乙個空白檔案。

新增乙個名為「mymathfuncs」的簡單類,以執行常見的算術運算,如加、減、乘和除。**應與以下內容類似:

// mathfuncsdll.h

namespace mathfuncs;}

請注意上面的方法宣告中的 __declspec(dllexport) 修飾符。這些修飾符使 dll 能夠匯出該方法以供其他應用程式使用。有關更多資訊,請參見 dllexport, dllimport。

若要為新類建立原始檔,請從「專案」選單中選擇「新增新項…」。將顯示「新增新項」對話方塊。從「類別」窗格中,選擇「visual c++」下的「**」。從「模板」窗格中,選擇「c++ 檔案(.cpp)」。為原始檔選擇乙個名稱,如「mathfuncsdll.cpp」,並按「新增」。將顯示乙個空白檔案。

在原始檔中實現「mymathfuncs」的功能。**應與以下內容類似:

// mathfuncsdll.cpp

// compile with: /ehsc /ld

#include "mathfuncsdll.h"

#include

using namespace std;

namespace mathfuncs

double mymathfuncs::subtract(double a, double b)

double mymathfuncs::multiply(double a, double b)

double mymathfuncs::divide(double a, double b)

return a / b;}}

若要將專案生成為 dll,請從「專案」選單中選擇「mathfuncsdll,再選擇「屬性…」。從左窗格中,選擇「配置屬性」下的「常規」。從右窗格中,將「配置型別」更改為「動態庫(.dll)」。按「確定」儲存更改。

注意 

如果是從命令列生成,請使用 /ld 編譯器選項指定輸出檔案應為 dll。有關更多資訊,請參見 /md、/mt、/ld(使用執行時庫)。

建立引用動態鏈結庫的應用程式

若要建立引用並使用剛剛建立的動態鏈結庫的應用程式,請從「檔案」選單中選擇「新建」,然後選擇「專案…」。

從「專案型別」窗格中,選擇「visual c++」下的「win32」。

從「模板」窗格中,選擇「win32 控制台應用程式」。

為專案選擇乙個名稱,如「myexecrefsdll」,並將其輸入「名稱」字段。從「解決方案」旁邊的下拉列表中選擇「添入解決方案」。這會將新專案新增到該動態鏈結庫所屬的同乙個解決方案中。

按「確定」啟動「win32 應用程式嚮導」。在「win32 應用程式嚮導」對話方塊的「概述」頁中,按「下一步」。

從「win32 應用程式嚮導」的「應用程式設定」頁中,選擇「應用程式型別」下的「控制台應用程式」。

從「win32 應用程式嚮導」的「應用程式設定」頁中,取消選擇「附加選項」下的「預編譯頭」。

按「完成」建立專案。

在控制台應用程式中使用類庫的功能

建立新的控制台應用程式後,將為您建立乙個空程式。原始檔的名稱與您在前面為專案選擇的名稱相同。在本示例中,名為「myexecrefsdll.cpp」。

若要使用在動態鏈結庫中建立的算術例程,必須引用該動態鏈結庫。為此,請選擇「專案」選單中的「引用…」。在「屬性頁」對話方塊中,展開「通用屬性」節點,並選擇「引用」。然後選擇「新增新引用…」按鈕。有關「引用…」對話方塊的更多資訊,請參見 「屬性頁」對話方塊 ->「通用屬性」->「引用」。

將顯示「新增引用」對話方塊。此對話方塊列出了所有可以引用的庫。「專案」選項卡列出了當前解決方案中的所有專案,以及它們包含的所有庫。從「專案」選項卡中,選擇「mathfuncsdll」。然後選擇「確定」。有關「新增引用」對話方塊的更多資訊,請參見 「新增引用」對話方塊。

若要引用動態鏈結庫的標頭檔案,必須修改包含目錄路徑。為此,請在「屬性頁」對話方塊中,展開「配置屬性」節點,然後展開「c/c++」節點,並選擇「常規」。在「附加包含目錄」旁邊,鍵入「mathfuncsdll.h」標頭檔案所在的位置的路徑。

動態鏈結庫僅在執行時由可執行檔案載入。必須告訴系統在**查詢「mathfuncsdll.dll」。這是使用 path 環境變數實現的。為此,請在「屬性頁」對話方塊中,展開「配置屬性」節點,並選擇「除錯」。在「環境」旁邊,鍵入以下內容:path=,其中 應替換為「mathfuncsdll.dll」的實際位置。按「確定」儲存進行的所有更改。

注意 

如果要從命令列而不是從 visual studio 內執行可執行檔案,必須從命令提示處手動更新 path 環境變數,如下所示:set path=%path%;,其中 應替換為「mathfuncsdll.dll」的實際位置。

現在,可以在應用程式中使用「mymathfuncs」類了。使用以下**替換「myexecrefsdll.cpp」的內容:

// myexecrefsdll.cpp

// compile with: /ehsc /link mathfuncsdll.lib

#include

#include "mathfuncsdll.h"

using namespace std;

int main()

通過從「生成」選單中選擇「生成解決方案」,生成可執行檔案。

執行應用程式

確保選擇「myexecrefsdll」作為預設專案。從「解決方案資源管理器」中,選擇「myexecrefsdll」,然後選擇「專案」選單中的「設為啟動專案」。

若要執行專案,請選擇「除錯」選單中的「開始執行(不除錯)」。輸出應如下所示:

複製**a + b = 106.4

a - b = -91.6

a * b = 732.6

a / b = 0.0747475 

建立和使用動態鏈結庫 C

我們將建立的第一種型別的庫是動態鏈結庫 dll 使用 dll 是一種重用 的絕佳方式。您不必在自己建立的每個程式中重新實現同一例程,而只需對這些例程編寫一次,然後從需要該功能的應用程式引用它們即可。本演練涵蓋以下內容 本主題假定您具備 c 語言的基礎知識。從 檔案 選單中,選擇 新建 然後選擇 專案...

Qt建立和使用動態鏈結庫

一 建立共享庫 1 新其他建專案,選擇 c 庫 2 選擇共享庫,並取專案名稱,單擊下一步。這裡取名位mylib 3 按預設配置單擊下一步至模組選項,選擇所需支援的模組。這裡勾選qtcore 和qtgui。4 直接下一步至完成。現在乙個共享庫的工程就新建好了。5 右擊專案新增新檔案,選擇qt 設計師介...

動態鏈結庫DLL建立和使用

到目前為止剛剛開始接觸dll dynamic link library 一邊看書,一邊建立了乙個dll檔案,然後進行了dll檔案的使用,具體操作以及 如下 1 createdll工程的建立,工程型別為win32下的dll型別 生成的程式入口函式為 bool apientry dllmain hmod...