WinAPI - C++ - Cơ bản về DLL

Hướng dẫn tạo và sử dụng DLL bằng Win32 API, C++ với VC++. Mặc nhiên coi như đã nắm kiến thức về DLL

Ref:
http://diendan.congdongcviet.com/showthread.php?t=47180


1. Load time DLL (load lúc khởi chạy chương trình)

1.1. Tạo DLL:
Bạn khởi tạo 1 project tên là ProjDLL, chú ý chọn kiểu là DLL. Các việc phải làm:

- Tạo header file với tên ProjDLL.h:

#ifdef __cplusplus
#define WIN32DLL_API extern "C"__declspec(dllexport)
#else
#define WIN32DLL_API __declspec(dllimport)
#endif

WIN32DLL_API int testFunc(void);

- File ProjDLL.cpp: 

thêm vào:
#include "ProjDLL.h"

và hàm:


BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
                     )
{
    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
        break;
    }
    return TRUE;
}

WIN32DLL_API int testFunc(void)
{
    MessageBox(NULL, L"testFunc", L"testFunc", MB_OK);
    return 0;
}

- Build:
Chúng ta sẽ có các file ProjDLL.dll, ProjDLL.lib,...

1.2. Tạo project "client" kết nối (sử dụng) DLL trên:

Bạn tạo project tên ProjUseDLL

- Copy file ProjDLL.h và ProjDLL.lib vào thư mục project của ProjUseDLL (cùng thư mục với ProjUseDLL.cpp) và copy ProjDLL.dll vào thư mục sẽ chứa file ProjUseDLL.exe

- Tại stdafx.h (hay bất cứ file header nào của ProjUseDLL):

thêm vào:
#pragma comment(lib, "ProjDLL.lib")

Hoặc, nếu là VC++, phải chuột lên Project trong Solution explorer --> Add --> Existing file --> ProjDLL.lib

- Tại ProjUseDLL.cpp:

thêm vào:
#include "ProjDLL.h"

và sử dụng các hàm trên DLL như bình thường, ví dụ:

testFunc();

Nhận xét

Đăng nhận xét