[DLL] Tạo DLL đơn giản trong visual studio C++

Thư viện liên kết động (dll), đúng như tên gọi của nó, là một thư viện cho phép các ứng dụng có thể liên kết đến và sử dụng nó. Nó được xem là một tổ hợp các hàm và dữ liệu mà có thể được sử dụng bởi nhiều ứng dụng khác nhau ở cùng một thời điểm.

Khi đã được viết và đóng gói trong một DLL, một hàm có thể được sử dụng ở bất cứ ứng dụng nào dưới dạng mã máy của nó mà không phải quan tâm đến mã nguồn nó được viết chi tiết ra sao.

Trong bài viết này chúng ta cùng tìm hiểu cách tạo 1 dll đơn giản chứa các hàm cộng, trừ, nhân chia hai số nguyên trong visual C++

Bước 1. Tạo empty project C++ trong visual studio

Tạo empty project trong visual studio.

Bước 2. Change type output cho chương trình sang dll

Click chuột phải vào project -> Properties -> General -> Configuration Type -> Dynamic Library(.dll)

Thay đổi output type trong visual studio.

Bước 3. Thêm 2 file MyMath.h và MyMath.cpp cho project

MyMath.h – Khai báo nguyên mẫu hàm


#ifdef CREATE_DLL

   #define DLL _declspec(dllexport)

#else

   #define DLL _declspec(dllimport)

#endif

DLL int Add(int a, int b);

DLL int Sub(int a, int b);

DLL int Mul(int a, int b);

DLL int Div(int a, int b);

MyMath.cpp – Định nghĩa hàm được khai báo trong file MyMath.h


#include <iostream>

#include "MyMath.h"

DLL int Add(int a, int b)
{

   return a + b;

}

DLL int Sub(int a, int b)
{

   return a - b;

}

DLL int Mul(int a, int b)
{

   return a * b;

}

DLL int Div(int a, int b)
{

   if (b == 0)

   {

      throw std::logic_error("Div by zero");

   }

   return a / b;

}

Trong file MyMath.h ta thấy có các chỉ thị tiền xử lý


#ifdef CREATE_DLL

   #define DLL _declspec(dllexport)

#else

   #define DLL _declspec(dllimport)

#endif

Các chỉ thị tiền xử lý này có ý nghĩa gì ?

Với project tạo dll ta sẽ định nghĩa 1 macro CREATE_DLL (tên macro đặt tùy ý) Khi đó macro DLL sẽ được định nghĩa là _declspec(dllexport) để báo cho trình biên dịch export hàm ra dll.

Với project sử dụng dll ta sẽ không định nghĩa macro CREATE_DLL. Khi đó macro DLL sẽ được định nghĩa là _declspec(dllimport) để báo cho trình biên dịch hàm được sử dụng sẽ được import từ dll.

Bước 4. Định nghĩa macro CREATE_DLL trong project tạo DLL

Click chuột phải vào project -> Properties -> C/C++ -> Preprocessor -> Preprocessor Definitions -> Add tên macro

Tạo chỉ thị tiền xử lý trong visual studio

Bước 5. Build project và xem thành quả.

Kết quả build project.

Đến đây ta đã tạo được 1 dll đơn giản chứa các hàm cộng, trừ, nhân, chia hai số nguyên.

Trong bài viết tới mình sẽ hướng dẫn sử dụng dll trong project C++ và C#.

Code ví dụ tại Github : https://github.com/deepcppofficial/DLL

Leave A Comment?