建立和使用動態鏈結庫 C C 呼叫

2021-05-24 02:41:34 字數 3692 閱讀 1099

我們將建立的第一種型別的庫是動態鏈結庫 (dll)。

使用 dll 是一種重用**的絕佳方式。

您不必在自己建立的每個程式中重新實現同一例程,而只需對這些例程編寫一次,然後從需要該功能的應用程式引用它們即可。

本演練涵蓋以下內容:

系統必備

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

如果您是剛開始學習 c++,建議您參閱 herb schildt 編寫的 c++ beginner's guide(《c++ 初學者指南》),該書可從 http://go.microsoft.com/fwlink/?linkid=115303

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

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

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

為專案選擇乙個名稱,如 mathfuncsdll,並將其鍵入「名稱」字段。

為解決方案選擇乙個名稱,如 dynamiclibrary,並將其鍵入「解決方案名稱」字段。

單擊「確定」啟動 win32 應用程式嚮導。

「win32 應用程式嚮導」對話方塊的「概述」頁中,單擊「下一步」

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

某���版本的 visual studio 不支援通過使用嚮導建立 dll 專案。

您可以稍後對此進行更改,以將專案編譯為 dll。

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

單擊「完成」建立專案。

若要為新類建立標頭檔案,請從「專案」選單中選擇「新增新項…」

將顯示「新增新項」對話方塊。

「類別」窗格中,選擇「visual c++」下的「**」

「模板」窗格中選擇「標頭檔案(.h)」

為標頭檔案選擇乙個名稱,如 mathfuncsdll.h,並單擊「新增」

將顯示乙個空白檔案。

新增乙個名為「mymathfuncs」的簡單類,以執行常見的算術運算,如加、減、乘和除。

**應與以下內容類似:

#ifdef mathfuncsdll_exports

#define mathfuncsdll_api __declspec(dllexport)

#else

#define mathfuncsdll_api __declspec(dllimport)

#endif // windows 標頭檔案:

#include

// returns a + b

extern "c" mathfuncsdll_api double add(double a, double b);      

// returns a - b

extern "c" mathfuncsdll_api double subtract(double a, double b);    

// returns a * b

extern "c" mathfuncsdll_api double multiply(double a, double b);    

// returns a / b

// throws dividebyzeroexception if b is 0

extern "c" mathfuncsdll_api double divide(double a, double b);

請注意此**方法宣告中的 __declspec(dllexport) 修飾符。

這些修飾符使 dll 能夠匯出該方法以供其他應用程式使用。

有關更多資訊,請參見 dllexport, dllimport

。若要為新類建立原始檔,請從「專案」選單中選擇「新增新項…」

將顯示「新增新項」對話方塊。

「類別」窗格中,選擇「visual c++」下的「**」

「模板」窗格中,選擇「c++ 檔案(.cpp)」

為原始檔選擇乙個名稱,如 mathfuncsdll.cpp,並單擊「新增」

將顯示乙個空白檔案。

在原始檔中實現「mymathfuncs」的功能。

**應與以下內容類似:

#include "mathfuncsdll.h"

#include

using namespace std;

bool apientry dllmain( hmodule hmodule,

dword  ul_reason_for_call,

lpvoid lpreserved

)

extern "c"   double add(double a, double b)

extern "c"   double subtract(double a, double b)

extern "c"   double multiply(double a, double b)

extern "c"    double divide(double a, double b)

return a / b;

}

建立c#控制台應用程式

新建乙個apihelper類,專門管理dllimport,新增using system.runtime.interopservices;

public class apihelper

在program中呼叫,將debug資料夾下的所有檔案copy到bin/debug下

console.writeline(apihelper.divide(2, 3));

console.writeline(apihelper.add(2, 3));

console.readline();

建立和使用動態鏈結庫

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

建立和使用動態鏈結庫 C

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

Qt建立和使用動態鏈結庫

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