當前位置:編程學習大全網 - 編程語言 - VC++ 程序 如何封裝為dll文件

VC++ 程序 如何封裝為dll文件

創建新的動態鏈接庫 (DLL) 項目

從 “文件”菜單中,選擇 “新建”,然後選擇 “項目…”。

在 “項目類型”窗格中,選擇 “Visual C++”下的 “Win32”。

在 “模板”窗格中,選擇 “Win32 控制臺應用程序”。

為項目選擇壹個名稱,如

MathFuncsDll,並將其鍵入 “名稱”字段。 為解決方案選擇壹個名稱,如

DynamicLibrary,並將其鍵入 “解決方案名稱”字段。

單擊 “確定”啟動 Win32 應用程序向導。

在 “Win32 應用程序向導”對話框的 “概述”頁中,單擊 “下壹步”。

在 “Win32 應用程序向導”中的 “應用程序設置”頁中,選擇 “應用程序類型”下的 “DLL”(如果可用),或者選擇 “控制臺應用程序”(如果 “DLL”不可用)。 某些版本的 Visual Studio

不支持通過使用向導創建 DLL 項目。您可以稍後對此進行更改,以將項目編譯為

DLL。

在 “Win32 應用程序向導”的 “應用程序設置”頁中,選擇 “附加選項”下的 “空項目”。

單擊 “完成”創建項目。

向動態鏈接庫添加類

若要為新類創建頭文件,請從 “項目”菜單中選擇 “添加新項…”。

將顯示 “添加新項”對話框。

在 “類別”窗格中,選擇 “Visual C++”下的 “代碼”。 在 “模板”窗格中選擇 “頭文件(.h)”。 為頭文件選擇壹個名稱,如

MathFuncsDll.h,並單擊 “添加”。 將顯示壹個空白文件。

添加壹個名為“MyMathFuncs”的簡單類,以執行常見的算術運算,如加、減、乘和除。代碼應與以下內容類似:

以帶有顏色區分的格式查看復制到剪貼板打印

// MathFuncsDll.h

namespace MathFuncs

{

class MyMathFuncs

{

public:

// Returns a + b

static __declspec(dllexport) double Add(double a, double b);

// Returns a - b

static __declspec(dllexport) double Subtract(double a, double b);

// Returns a * b

static __declspec(dllexport) double Multiply(double a, double b);

// Returns a / b

// Throws DivideByZeroException if b is 0

static __declspec(dllexport) double Divide(double a, double b);

};

}

// MathFuncsDll.h

namespace MathFuncs

{

class MyMathFuncs

{

public:

// Returns a + b

static __declspec(dllexport) double Add(double a, double b);

// Returns a - b

static __declspec(dllexport) double Subtract(double a, double b);

// Returns a * b

static __declspec(dllexport) double Multiply(double a, double b);

// Returns a / b

// Throws DivideByZeroException if b is 0

static __declspec(dllexport) double Divide(double a, double b);

};

}

請註意此代碼方法聲明中的 __declspec(dllexport) 修飾符。 這些修飾符使 DLL

能夠導出該方法以供其他應用程序使用。有關更多信息,請參見 dllexport, dllimport。

若要為新類創建源文件,請從 “項目”菜單中選擇 “添加新項…”。

將顯示 “添加新項”對話框。

在 “類別”窗格中,選擇 “Visual C++”下的 “代碼”。 在 “模板”窗格中,選擇 “C++ 文件(.cpp)”。 為源文件選擇壹個名稱,如

MathFuncsDll.cpp,並單擊 “添加”。 將顯示壹個空白文件。

在源文件中實現“MyMathFuncs”的功能。代碼應與以下內容類似:

以帶有顏色區分的格式查看復制到剪貼板打印

// MathFuncsDll.cpp

// compile with: /EHsc /LD

#include "MathFuncsDll.h"

#include <stdexcept>

using namespace std;

namespace MathFuncs

{

double MyMathFuncs::Add(double a, double b)

{

return a + b;

}

double MyMathFuncs::Subtract(double a, double b)

{

return a - b;

}

double MyMathFuncs::Multiply(double a, double b)

{

return a * b;

}

double MyMathFuncs::Divide(double a, double b)

{

if (b == 0)

{

throw new invalid_argument("b cannot be zero!");

}

return a / b;

}

}

// MathFuncsDll.cpp

// compile with: /EHsc /LD

#include "MathFuncsDll.h"

#include <stdexcept>

using namespace std;

namespace MathFuncs

{

double MyMathFuncs::Add(double a, double b)

{

return a + b;

}

double MyMathFuncs::Subtract(double a, double b)

{

return a - b;

}

double MyMathFuncs::Multiply(double a, double b)

{

return a * b;

}

double MyMathFuncs::Divide(double a, double b)

{

if (b == 0)

{

throw new invalid_argument("b cannot be zero!");

}

return a / b;

}

}

若要將項目生成為 DLL,請從

“項目”菜單中選擇

MathFuncsDll “屬性...”。 在左窗格中,選擇 “配置屬性”下的 “常規”。

在右窗格中,將 “配置類型”更改為 “動態庫(.dll)”。

單擊 “確定”保存更改。

說明

如果您從命令行生成項目,請使用

/LD 編譯器選項指定輸出文件應為 DLL。

有關更多信息,請參見 /MD、/MT、/LD(使用運行庫)。

編譯該動態鏈接庫,方法是選擇

“生成”菜單中的 “生成解決方案”。

這樣就創建了壹個可供其他程序使用的

DLL。

  • 上一篇:學而思怎麽報名網課高中
  • 下一篇:教師面試常見問題都有哪些?
  • copyright 2024編程學習大全網