從 “文件”菜單中,選擇 “新建”,然後選擇 “項目…”。
在 “項目類型”窗格中,選擇 “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。