• 跳至主要導覽
  • 跳至主要內容
  • 跳至主要資訊欄
Office 指南

Office 指南

辦公室工作實用教學

  • Excel
  • Word
  • PowerPoint
  • Windows
  • PowerShell
  • R

Visual Studio 2019 建立 DLL 動態連結函式庫教學與範例

介紹如何使用 Visual Studio 2019 將自己撰寫的 C++ 程式編譯成 DLL 動態連結函式庫。

建立 DLL 動態連結函式庫

Step 1
開啟 Visual Studio 2019,點選「建立新的專案」。

建立新專案
建立新專案

Step 2
專案的類型請選擇「動態連結程式庫(DLL)」。

選擇「動態連結程式庫(DLL)」
選擇「動態連結程式庫(DLL)」

Step 3
輸入專案的名稱,並點選「建立」。

設定專案名稱
設定專案名稱

在建立動態連結程式庫專案之後,專案內會包含一些基本的內容,這些程式碼基本上不需要更動。

基本專案內容
基本專案內容

Step 4
在「標頭檔」上按下滑鼠右鍵,選擇「加入」中的「新增項目」。

加入標頭檔
加入標頭檔

Step 5
項目類型選擇「標頭檔(.h)」。

新增標頭檔
新增標頭檔

Step 6
在新增的標頭檔中,填入以下程式碼。

#pragma once

#ifdef MYDLL_EXPORTS
#define MYDLL_API __declspec(dllexport)
#else
#define MYDLL_API __declspec(dllimport)
#endif

// 計算歐氏距離(Euclidean Distance)函數
extern "C" MYDLL_API double dist(
  const double x1, const double y1,
  const double x2, const double y2);
標頭檔程式碼
標頭檔程式碼

關於此處 dllexport 與 dllimport 的結構用法,可以參考 OT Coding Note 的解說。

Step 7
在「來源檔案」上按下滑鼠右鍵,選擇「加入」中的「新增項目」。

加入來源檔案
加入來源檔案

Step 8
項目類型選擇「C++ 檔(.cpp)」。

新增 C++ 檔
新增 C++ 檔

Step 9
在新增的 C++ 檔中,填入以下程式碼。

#include "pch.h"
#include <cmath>
#include "MyDLL.h"

// 計算歐氏距離(Euclidean Distance)函數
double dist(
  const double x1, const double y1,
  const double x2, const double y2) {
  return std::sqrt(std::pow(x1 - x2, 2) + std::pow(y1 - y2, 2));
}
C++ 檔程式碼
C++ 檔程式碼

Step 10
在「建置」選單中選擇建置自己的專案。

建置專案
建置專案

專案建置完成之後,在下方的輸出訊息中就會顯示產生的 DLL 檔案路徑,這樣就完成 DLL 動態連結函式庫的建立了。

DLL 函式庫建置完成
DLL 函式庫建置完成

Step 11
開啟 DLL 檔案所在的目錄,就可以看到產生的 DLL 函式庫檔案了。

DLL 函式庫檔案
DLL 函式庫檔案

使用 DLL 動態連結函式庫

建立好自己的 DLL 動態連結函式庫之後,就可以在其他專案中使用這個 DLL 動態連結函式庫了,以下是詳細的操作步驟。
Step 1
新增一個「主控台應用程式」類型的專案(或是其他類型的專案亦可)。

建立「主控台應用程式」
建立「主控台應用程式」

Step 2
在「專案」選單中,點選專案的屬性。

修改專案屬性
修改專案屬性

Step 3
在「C/C++」的「一般」設定中,修改「其他 Include 目錄」設定,加入 MyDLL.h 標頭檔案所在的目錄。

加入 <code>MyDLL.h</code> 標頭檔所在目錄
加入 MyDLL.h 標頭檔所在目錄

Step 4
在「連結器」的「一般」設定中,修改「其他程式庫目錄」設定,加入 MyDLL.lib 程式庫檔案所在的目錄。

加入 <code>MyDLL.lib</code> 程式庫檔案所在目錄
加入 MyDLL.lib 程式庫檔案所在目錄

Step 5
在「連結器」的「輸入」設定中,修改「其他相依姓」設定,加入 MyDLL.lib 程式庫檔案。

加入 MyDLL.lib 程式庫檔案
加入 MyDLL.lib 程式庫檔案

Step 6
在「建置事件」的「建置後事件」設定中,將「命令列」內容設定為以下指令,讓每次專案建置之後,自動將 MyDLL.dll 檔案複製到專案建置的目錄,跟執行檔案放在一起:

xcopy /y /d "..\..\MyDLL\$(IntDir)MyDLL.dll" "$(OutDir)"
設定建置後事件
設定建置後事件

Step 7
編輯 C/C++ 程式碼,引入 MyDLL.h 之後即可使用其中的函數。

#include <iostream>
#include "MyDLL.h"
int main() {
  double d = dist(1.0, 2.0, 4.0, 6.0);
  std::cout << "d = " << d << std::endl;
  return 0;
}

編輯好 C/C++ 程式碼之後,即可編譯並執行。

編譯、執行 C/C++ 程式
編譯、執行 C/C++ 程式

這是將 C/C++ 程式編譯之後,搭配 DLL 動態連結函式庫執行的結果。

搭配 DLL 動態連結函式庫執行的結果
搭配 DLL 動態連結函式庫執行的結果

參考資料:微軟官方文件、wikiHow、Wolfprojects、MicrosoftDocs

分類:C/C++

讀者互動方式

發佈留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

主要資訊欄

搜尋

近期文章

  • C++ 語言使用 Crypto++ 實作 RSA 數位簽章教學與範例
  • C++ 語言使用 Crypto++ 實作 RSA-OAEP 搭配 SHA256 加密教學與範例
  • C++ 語言使用 Crypto++ 實作 AES 加密、解密、認證加密教學與範例
  • C++ 語言使用 Crypto++ 實作 MD5、SHA1、SHA2、BLAKE2 雜湊教學與範例
  • Ubuntu Linux 安裝、使用 Crypto++ 加密函式庫教學與範例
  • C 語言使用 OpenSSL 實作橢圓曲線 ECDH 金鑰交換教學與範例
  • Python 以 eciespy 實作 ECC 非對稱式加密方法教學與範例
  • C 語言使用 OpenSSL 實作 PBKDF2 教學與範例

推薦網站

  • Udemy 線上教學課程
  • Coursera 線上教學課程

關注本站

  • 電子郵件
  • Facebook

公益

  • 家扶基金會
  • 台灣世界展望會
  • Yahoo 奇摩公益
  • igiving 公益網
  • 兒福聯盟

Copyright © 2021 · Office Guide