[DLL] Sử dụng DLL trong visual C++ (P1)

Trong các bài trước chúng ta đã biết cách tạo DLL trong visual studio. Nếu các bạn chưa tạo được có thể xem lại bài viết Tạo DLL đơn giản trong visual studio

Như đã biết DLL có 2 cách sử dụng phụ thuộc vào cách nhúng thông tin vào trong file thực thi.

  • Liên kết không tường minh hay liên kết ở thời điểm nạp ( Load-time dynamic linking) diễn ra ở thời điểm biên dịch.
  • Liên kết tường minh hay liên kết ở thời điểm chạy (Run-time Dynamic Linking).

Trong bài viết này chúng ta sẽ tím hiểu cách liên kết DLL ở thời điểm biên dịch.

Để tạo liên kết DLL ở thời điểm biên dịch chúng ta cần sử dụng 3 file. Các file này được tạo ra khi build DLL

  1. File .dll được copy vào cùng thư mục chạy của chương trình.
  2. File .lib (Object File Library) là thư viện liên kết với DLL
  3. File .h chứa khai báo nguyên mẫu của DLL.
File .dll và .lib khi build dll
File .dll và file .lib khi build DLL project

Bước 1: Tạo project Win32 Console Application

Create windows console application project

Bước 2: Tạo thư mục để chứa file .h và file .lib

Thư mục config file .h và file .lib

Ở đây mình tạo  thư mục Libs và trong thư mục Libs phân ra làm 3 thư mục nhỏ.

  • Thư mục Inc chứa file .h cho include
  • Thư mục Debug chứa file .lib cho chế độ build Debug
  • Thư mục Release chứa file .lib cho chế độ build release.

 

Bước 3: Config file include (.h)

Click chuột phải vào project -> Properties -> C/C++ -> General -> Additional Include Directories -> Thêm đường dẫn đến thư mục chứa file .h ( thư mục Inc ở trên).

Config file .h (include)

Trong project mình đã tạo thư mục Libs/Inc để chứa file .h nên đường dẫn mình config sẽ là

$(ProjectDir)Libs/Inc

Nên sử dụng các macro được cung cấp sẵn bới Microsoft để thêm đường dẫn. Chúng ta có thế xem các macro bằng cách click vào Macros

Macro được hỗ trợ bới visual studio.

Điểm qua một số macro hay dùng

  • $(ProjectDir) : Đường dẫn đến thư mục project hiện tại
  • $(SolutionDir) : Đường dẫn đến thư mục solution hiện tại
  • $(PlatformTarget) : x64 hoặc x86 tùy theo cài đặt
  • $(Configuration) : Debug hoặc release tùy theo chế độ build.

Bước 4: Config file thư viện liên kết với DLL ( .lib )

Click chuột phải vào project -> Properties -> Linker -> Input -> Additional Dependencies -> Thêm đường dẫn đến các file .lib

Config file thư viện liên kết (.lib)

Bước 5. Copy file .dll vào thư mục của file thực thi.

Bước 6. Sử dụng các hàm trong DLL, và chạy project


#include "stdafx.h"

#include <iostream>

#include "MyMath.h"

using namespace std;

int main()

{

   int number1, number2;

   cout << "Enter number 1 : "; cin >> number1;

   cout << "Enter number 2 : "; cin >> number2;

   int sum = Add(number1, number2);

   cout << "Tong  = " << sum << endl;

   int sub = Sub(number1, number2);

   cout << "Hieu = " << sub << endl;

   int mul = Mul(number1, number2);

   cout << "Tich = " << mul << endl;

   try

   {

      float div = Div(number1, number2);

      cout << "Thuong = " << div << endl;

   }

   catch (std::logic_error& error)

   {

      cout << error.what() << endl;

   }

   system("PAUSE");

   return 0;

}

Chú ý:

  • Khi build project sử dụng DLL ở chế độ nào (Debug , Release) thì các file .lib.dll phải được build ở chế độ tương ứng khi build DLL

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

Tagged:

Leave A Comment?