我們將建立的第一種型別的庫是動態鏈結庫 (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 設計師介...