Khác biệt giữa bản sửa đổi của “Dynamic Link Library”

Nội dung được xóa Nội dung được thêm vào
AvicBot (thảo luận | đóng góp)
n r2.6.5) (Bot: Thêm fr:Dynamic Link Library
Cheers!-bot (thảo luận | đóng góp)
n replaced: [[Image: → [[Hình: using AWB
Dòng 2:
{{Infobox file format
| name = Dynamic link library
| icon = [[ImageHình:DLL icon on Windows Vista.png|64px|DLL Icon]]
| extension = .dll
| mime = application/x-msdownload
Dòng 68:
* Bằng cách tạo ra một module [[file]] định nghĩa (.def) và sử dụng file này khi xây dựng DLL. Cách làm này cũng thuận tiện cho việc export các hàm theo số thứ tự hơn là theo tên (mặc định là theo tên). Lúc này ta sẽ phải xác định [[đường dẫn]] tới [[thư mục]] /DEF khi sử dụng [[trình biên tập]] để xây dựng DLL.
 
* Bằng cách sử dụng từ khóa __declspec (dllexport) trong định nghĩa hàm. Trong trường hợp muốn export các lớp, ta đặt từ khóa này sau từ khóa class. [[Trình biên dịch]] sẽ đánh dấu các hàm hay lớp này trong DLL có thể export được.
Ví dụ ta có hàm Foo(Type1 a, Type2 b), để export nó từ trong một DLL; ta có thể thêm từ khóa __declspec(dllexport) trước tên của hàm, hoặc viết một module file định nghĩa với nội dung như sau:
 
::LIBRARY FooLib <br />
::EXPORTS<br />
::Foo private @1<br />
Dòng cuối cùng sẽ chỉ cho [[trình biên tập]] (linker) biết tên hàm sẽ được export.
 
Dòng 82:
* Các tiến trình và tuyến (thread) được khởi tạo hay kết thúc
 
* Khi có lời gọi tới hàm LoadLibrary hay FreeLibrary.
Hàm này có một chút khác biệt so với các hàm khác trong DLL, theo nghĩa nó cho phép ta thực hiện một quá trình khởi tạo hoặc thu dọn nào đó theo nhu cầu của ta. Dưới đây là cấu trúc của một hàm DllMain:
 
Dòng 104:
}
</pre>
 
 
Hàm cung cấp cho ta bốn vị trí cho phép ta sử dụng để thực hiện việc dọn dẹp hay khởi tạo cụ thể trong ứng dụng, bao gồm:
 
* DLL_PROCESS_ATTACH: là giá trị của tham số fdwReson trong trường hợp một tiến trình nạp DLL lần đầu tiên. Mỗi ứng dụng sử dụng DLL này sẽ có một bản sao dữ liệu DLL riêng, trừ trường hợp ta sử dụng dữ liệu dùng chung cho các thể hiện của DLL này (DLL instances).
 
* DLL_THREAD_ATTACH: tương tự như DLL_PROCESS_ATTACH nhưng nó được dùng khi một [[tuyến]] (thread) gọi một hàm trong DLL.