溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何使用VS2015創(chuàng)建和使用動(dòng)態(tài)鏈接庫(kù)

發(fā)布時(shí)間:2021-10-18 11:30:52 來(lái)源:億速云 閱讀:222 作者:小新 欄目:編程語(yǔ)言

這篇文章將為大家詳細(xì)講解有關(guān)如何使用VS2015創(chuàng)建和使用動(dòng)態(tài)鏈接庫(kù),小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

我們先來(lái)演示如何使用VS2015創(chuàng)建一個(gè)動(dòng)態(tài)鏈接庫(kù)。
1.新建一個(gè)“Win32控制臺(tái)應(yīng)用程序”,“名稱”為MathFuncsDll,“解決方案名稱”為DynamicLibrary,單擊“確定”。

如何使用VS2015創(chuàng)建和使用動(dòng)態(tài)鏈接庫(kù) 

2.單擊“下一步”,“應(yīng)用程序類型”選擇“DLL”,“附加選項(xiàng)”勾選“空項(xiàng)目”,單擊“完成”。

如何使用VS2015創(chuàng)建和使用動(dòng)態(tài)鏈接庫(kù) 

3.為解決方案“DynamicLibrary”下的項(xiàng)目“MathFuncsDll”添加頭文件MathFuncsDll.h,代碼如下:
如何使用VS2015創(chuàng)建和使用動(dòng)態(tài)鏈接庫(kù)#pragma once

// 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);
};

PS:修飾符__declspec(dllexport)使 DLL 能夠?qū)С鲈摲椒ㄒ怨┢渌麘?yīng)用程序使用

4.為解決方案“DynamicLibrary”下的項(xiàng)目“MathFuncsDll”添加源文件MathFuncsDll.cpp,代碼如下:

如何使用VS2015創(chuàng)建和使用動(dòng)態(tài)鏈接庫(kù) 

// MathFuncsDll.cpp
#include <stdexcept>
#include "MathFuncsDll.h"
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;
}
}

5.右鍵單擊項(xiàng)目MathFuncsDll選擇“屬性”,在左窗格中選擇“配置屬性”下的“常規(guī)”,在右窗格中,將“配置類型”更改為“動(dòng)態(tài)庫(kù)(.dll)”。 單擊“確定”保存更改。

如何使用VS2015創(chuàng)建和使用動(dòng)態(tài)鏈接庫(kù) 

6.按Ctrl+B編譯生成該動(dòng)態(tài)鏈接庫(kù),或者單擊“生成”菜單中的“生成解決方案”菜單。

如何使用VS2015創(chuàng)建和使用動(dòng)態(tài)鏈接庫(kù) 

 至此,一個(gè)動(dòng)態(tài)鏈接庫(kù)就創(chuàng)建好了,我們可以把頭文件和生成的動(dòng)態(tài)鏈接庫(kù)文件拷貝到指定的目錄調(diào)用即可。

下面我們來(lái)演示如何使用VS2015引用動(dòng)態(tài)鏈接庫(kù)。
1.右鍵單擊解決方案名稱DynamicLibrary,“添加”,“新建項(xiàng)目”,“win32控制臺(tái)應(yīng)用程序”,名稱為MyExecRefsDll,“確定”。

如何使用VS2015創(chuàng)建和使用動(dòng)態(tài)鏈接庫(kù) 

2.單擊“下一步”,選擇“應(yīng)用程序類型”下的“控制臺(tái)應(yīng)用程序”,不勾選“附加選項(xiàng)”下的“預(yù)編譯頭”,單擊“完成”。

如何使用VS2015創(chuàng)建和使用動(dòng)態(tài)鏈接庫(kù)PS:通過(guò)這種方式可以創(chuàng)建一個(gè)空的源程序MyExecRefsDll.cpp。 

3.配置引用動(dòng)態(tài)鏈接庫(kù)。右鍵單擊項(xiàng)目MyExecRefsDll下的“引用”,選擇“添加引用”,勾選列表中的MathFuncsDll,確定。

如何使用VS2015創(chuàng)建和使用動(dòng)態(tài)鏈接庫(kù) 

4.添加動(dòng)態(tài)鏈接庫(kù)的頭文件路徑。 右鍵單擊項(xiàng)目MyExecRefsDll,單擊左側(cè)“配置屬性”下的“C/C++”節(jié)點(diǎn)下的“常規(guī)”選項(xiàng),在右側(cè)“附加包含目錄”的值域中鍵入MathFuncsDll.h 頭文件所在的路徑(如E:\workplace\DllDemo\DynamicLibrary\MathFuncsDll)。

如何使用VS2015創(chuàng)建和使用動(dòng)態(tài)鏈接庫(kù) 

5.添加動(dòng)態(tài)鏈接庫(kù)文件的路徑。 單擊左側(cè)“配置屬性”下的“調(diào)試”選項(xiàng),在右側(cè)“環(huán)境”值域中鍵入PATH=<MathFuncsDll.dll文件的路徑>,例如這里MathFuncsDll.dll的實(shí)際路徑是PATH=E:\workplace\DllDemo\DynamicLibrary\Release\MathFuncsDll.dll,單擊“確定”。

如何使用VS2015創(chuàng)建和使用動(dòng)態(tài)鏈接庫(kù) 

6.復(fù)制下面代碼到MyExecRefsDll.cpp中覆蓋原來(lái)的內(nèi)容:

// MyExecRefsDll.cpp
// compile with: /EHsc /link MathFuncsDll.lib
#include <iostream>
#include "MathFuncsDll.h"
using namespace std;
int main()
{
double a = 7.4;
int b = 99;
cout << "a + b = " <<
MathFuncs::MyMathFuncs::Add(a, b) << endl;
cout << "a - b = " <<
MathFuncs::MyMathFuncs::Subtract(a, b) << endl;
cout << "a * b = " <<
MathFuncs::MyMathFuncs::Multiply(a, b) << endl;
cout << "a / b = " <<
MathFuncs::MyMathFuncs::Divide(a, b) << endl;
system("pause");
return 0;
}

7.按Ctrl+B或者選擇“生成”菜單中的“生成解決方案”可生成可執(zhí)行文件。

8.右鍵單擊項(xiàng)目MyExecRefsDll選擇“設(shè)為啟動(dòng)項(xiàng)目”,按Ctrl+F5或選擇“調(diào)試”菜單中的“開(kāi)始執(zhí)行(不調(diào)試)”來(lái)運(yùn)行,結(jié)果如下:

a + b = 106.4
a - b = -91.6
a * b = 732.6
a / b = 0.0747475
請(qǐng)按任意鍵繼續(xù). . .

關(guān)于“如何使用VS2015創(chuàng)建和使用動(dòng)態(tài)鏈接庫(kù)”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI