2009-01-27 3 views
76

Đây có thể là một câu hỏi rất noobie, nhưng trong thế giới phát triển ứng dụng web ngày nay nhiều lập trình viên không cần phải đối phó với nhiều dll, và do đó không bận tâm để tìm hiểu về mục đích của họ.dll là gì?

Vì vậy, dll là gì?

  1. Nó được sử dụng để làm gì?
  2. Tính năng này hoạt động như thế nào?
  3. Bạn tạo một tài khoản như thế nào?
  4. Trong trường hợp nào tạo ra một trường hợp phù hợp?

Tôi được thông báo rằng dll được sử dụng để lưu trữ các thư viện chức năng, nhưng ngoài ra tôi không biết nhiều. Hy vọng rằng một người nào đó ở đây có thể khai sáng cho tôi để cuối cùng tôi có thể ngừng tự hỏi những gì tất cả những tập tin .dll trong thư mục Windows của tôi đang làm.

+0

Wiki cộng đồng nên được sử dụng cho các trường hợp không có câu trả lời thực tế cho câu hỏi của bạn. Đây là một câu hỏi hợp lệ và bằng cách chọn chế độ wiki cộng đồng, bạn ngăn bản thân và người trả lời không nhận được đại diện trong câu hỏi này. –

+0

câu hỏi này có khả năng trở thành một câu hỏi rất phổ biến –

+0

Bạn nghĩ vậy? Có lẽ cho lượt xem nhưng không có khả năng cho phiếu bầu ... Dù sao nó đã được trả lời 4 lần. –

Trả lời

48

DLL là thư viện liên kết động. Nó là một tập hợp mã và/hoặc dữ liệu, có thể được sử dụng bởi một số ứng dụng (hoặc các thư viện/mô-đun khác). Ví dụ:

Vì vậy, ví dụ các phương pháp phổ biến để xử lý tệp, làm việc với các thành phần GUI, v.v. có sẵn trong thư viện để một số ứng dụng có thể sử dụng cùng chức năng. Điều này không chỉ làm giảm nhu cầu xây dựng cùng một công cụ nhiều lần, mà còn đảm bảo rằng ví dụ: các hộp thoại phổ biến giống nhau giữa các ứng dụng.

Thư viện có thể được tải trong thời gian chạy và do đó được chia sẻ giữa các ứng dụng đồng thời khác nhau. Đây được gọi là liên kết động.

Trong một số trường hợp, thư viện có thể được bao gồm trong chính ứng dụng. Điều này được gọi là liên kết tĩnh. Liên kết tĩnh giúp việc triển khai dễ dàng hơn với chi phí linh hoạt khi ứng dụng khác nhau sẽ tải cùng một bản sao của tệp DLL.

Tuy nhiên, liên kết tĩnh không phải lúc nào cũng là một tùy chọn. Ví dụ. bạn không thể liên kết tĩnh một ứng dụng .NET. Người dùng phải có các thư viện .NET để chạy một ứng dụng .NET và các thư viện (hoặc các assembly được gọi trong .NET) được nạp vào thời gian chạy.

Các tệp DLL được tạo bởi cùng một công cụ được sử dụng để tạo ứng dụng. Các chi tiết cụ thể phụ thuộc rất nhiều vào các công cụ được sử dụng.

+0

Cảm ơn câu trả lời, một điều tôi tự hỏi là làm thế nào để các ứng dụng biết những chức năng có sẵn trong dll? Các dll chính nó là tất cả các mã máy phải không? Vì vậy, làm thế nào là chữ ký chức năng công cộng trong dll tiếp xúc? – Daniel

+0

Tôi không biết về hầu hết các ngôn ngữ, nhưng tính năng tự động hoàn thành của Visual Studio sẽ hiển thị cho bạn tất cả các chức năng có sẵn. – Grant

+1

Nhưng làm cách nào để tự động hoàn thành tìm hiểu các chức năng có sẵn là gì nếu dll chỉ là mã máy? – Daniel

-1

The Wikipedia page on DLLs có khá nhiều thông tin bạn muốn.

động liên kết thư viện (cũng bằng văn bản mà không có gạch nối), hoặc DLL, là việc thực hiện các khái niệm thư viện chia sẻ trong Microsoft Windows và OS/2 hệ điều hành của Microsoft. Các thư viện này thường là có phần mở rộng tệp DLL, OCX (đối với các thư viện có chứa các điều khiển ActiveX ) hoặc DRV (đối với trình điều khiển hệ thống cũ). Các định dạng tệp cho Các tệp DLL giống với các tệp Windows EXE - có nghĩa là, Portable Thực thi (PE) cho Windows 32 bit và 64 bit và New Executable (NE) cho Windows 16 bit. Giống như với EXE, các tệp DLL có thể chứa mã, dữ liệu và tài nguyên , trong bất kỳ kết hợp nào. Theo nghĩa rộng hơn của thuật ngữ, bất kỳ tệp dữ liệu nào có cùng định dạng tệp có thể được gọi là tài nguyên DLL.

+14

Tôi biết cách sử dụng wikipedia, nhưng thích hỏi ở đây hơn là nghiên cứu về wikipedia cũng giống như thích hỏi một giáo sư hơn là tìm kiếm nó trong cuốn sách. Đôi khi giáo sư có thể cung cấp cho bạn cái nhìn sâu sắc hơn, imho. – Daniel

+2

-1. Không có gì trong đoạn này cung cấp giải thích hữu ích cho OP – KMC

5

Thư viện được liên kết động.

Để cung cấp cho bạn một ví dụ, Nếu bạn có DLL của người khác được tải vào ứng dụng của bạn, bạn có thể sử dụng các bit lập trình từ nó.

Bạn có thể tải tệp DLL tạo các số ngẫu nhiên luôn bắt đầu bằng "5" hoặc thứ gì đó.

Trong chương trình bạn có thể gọi CrazyDLL.GenerateRandomNumbersSorta() và nó sẽ trả về số. Ví dụ trên thế giới thực, tôi có DLL kết hợp 4 hộp văn bản (bạn sử dụng chúng để nhập địa chỉ IP) và nó tự động chỉ chấp nhận số nhỏ hơn 256 và xử lý nhấn phím xóa để chuyển đến hộp văn bản trước đó .

Tôi đã tạo một tệp DLL có mã đó và bây giờ tất cả những gì tôi phải làm là kéo và thả nhiều bộ sưu tập hộp văn bản địa chỉ IP mà không phải lặp lại tất cả mã đó.

Cùng một DLL cũng có chức năng chuyển đổi địa chỉ IP thành chuỗi thập lục phân và mã hữu ích khác.

+0

Tôi đã sửa nó ... –

1

Từ MSDN Library:

Một dll (DLL) là một mô-đun có chứa chức năng và dữ liệu có thể được sử dụng bởi một mô-đun (ứng dụng hoặc DLL).

1

DLL = động Tải Thư viện liên kết. Như bạn đã nói, về cơ bản nó là một tập hợp các hàm, các lớp C++ và/hoặc các biến toàn cục. Bạn có thể tải DLL tĩnh (tức là hệ điều hành tải nó tự động khi chương trình của bạn khởi động) hoặc động (chương trình của bạn tải nó một cách rõ ràng), tại thời điểm đó các hàm và nội dung bên trong DLL có sẵn cho chương trình của bạn.

Tạo mô hình tương tự như tạo EXE, ngoại trừ không cần chức năng main(). Có các chỉ thị liên kết để báo cho trình liên kết tạo một DLL thay vì một EXE.

Lý do chính bạn muốn thực hiện việc này là đóng gói một số mã ở một nơi và sử dụng mã đó từ nhiều exe, thay vì liên kết mã vào từng mã.

Lý do hơi lịch sử là exe của bạn có thể nhỏ hơn vì một số mã trên thực tế nằm trong một tệp khác. Điều này có nghĩa là lượng không gian được lấy trong bộ nhớ bằng exe của bạn có thể nhỏ hơn. Trên các hệ thống hiện đại, đây là vấn đề ít hơn so với trước đây, mặc dù nó vẫn có thể là một vấn đề trên Windows Mobile.

25

DLL = Thư viện liên kết động

Tên thực sự khá mô tả về những gì chúng đạt được.

Thư viện

Cho phép bạn cô lập mã cho một miền vấn đề cụ thể vào một địa điểm duy nhất. Sau đó chia sẻ điều này giữa nhiều ứng dụng. Thư viện có thể được đổi chỗ cho một thư viện khác bất kỳ lúc nào để sửa lỗi hoặc thêm chức năng.

Liên kết

Bạn có thể "Liên kết" thư viện đến một ứng dụng sao cho logic trong thư viện không được biên dịch trực tiếp vào ứng dụng.

động

Thư viện có thể được nạp theo yêu cầu. Thay vì tải một EXE khổng lồ vào bộ nhớ, hệ điều hành chỉ có thể tải các phần cần thiết. Thêm vào đó nếu một DLL được chia sẻ giữa các ứng dụng, hệ điều hành có thể tối ưu hóa cách thư viện được tải và chia sẻ giữa các ứng dụng.

+1

+1 để đề cập đến tải bộ nhớ động – KMC

7

DLL (dynamic link library) tệp có thể được mô tả là "các chương trình con nhỏ" có nghĩa là giúp chương trình lớn hơn chạy tốt. Chúng cung cấp một phương tiện liên kết các tài nguyên phần cứng và phần mềm khác nhau (tại các điểm khác nhau trong các phiên chạy của nó) đến chương trình thực thi chính mà chúng dựa trên cơ sở "như-cần-phát sinh". Điều này giúp loại bỏ sự cần thiết phải tải tất cả mọi thứ để làm với chương trình thực thi chính vào RAM của máy tính (bộ nhớ truy cập ngẫu nhiên) khi chương trình được chạy lần đầu tiên.

Tài nguyên phần mềm được thực hiện bởi các tệp DLL bao gồm mã cho các hàm chương trình khác nhau không thực sự cần thiết để giữ cho chương trình đang chạy: đó là các hàm chỉ cần được gọi vào một số thời điểm nhất định trong một phiên làm việc đã cho và có thể thậm chí không cần phải được gọi. Tải các chức năng đó (và có thể có một số lượng đáng kể cho một chương trình) vào RAM của máy tính khi chương trình được chạy lần đầu và sau đó giữ chúng trong suốt phiên sẽ là một sự lãng phí dung lượng RAM - được xem là một cao cấp.

Một tiến bộ lớn:

Sự phát triển của DLL là một tiến bộ lớn trong tính toán, bởi vì trước khi họ đã có sẵn, tất cả mọi thứ để làm với một chương trình (bao gồm cả chức năng mà là rất hiếm khi được sử dụng) phải được nạp vào RAM khi chương trình được nạp lần đầu tiên. Điều đó dẫn đến tính toán cực kỳ kém hiệu quả, với tốc độ chậm hơn được trưng bày bởi các chương trình khác nhau. Nó cũng vô cùng khó khăn để đa nhiệm bằng cách chạy ngay cả một vài chương trình đơn giản, vì sự căng thẳng tiếp viên trên RAM.

Lưu ý:

DLL thường phiên bản cụ thể. Những người làm việc tốt cho, nói, Phiên bản 1 của một chương trình (hoặc một ngôn ngữ lập trình, có thể là trường hợp) có thể không hoạt động tốt với Phiên bản 2. Nguyên tắc chung là các DLL trong phiên bản cũ có xu hướng không thể làm việc tốt với phiên bản mới hơn, nhưng phiên bản mới hơn có thể hoạt động khá tốt với phiên bản cũ của chương trình hoặc ngôn ngữ lập trình.

0

Thư viện liên kết động (cũng được viết unhyphenated), hoặc DLL, là việc Microsoft triển khai khái niệm thư viện được chia sẻ trong hệ điều hành Microsoft Windows và OS/2. Các thư viện này thường có phần mở rộng tệp DLL, OCX (cho các thư viện chứa các điều khiển ActiveX) hoặc DRV (đối với các trình điều khiển hệ thống cũ). Các định dạng tệp cho các tệp DLL giống như các tệp Windows EXE - có thể thực thi được (PE) cho Windows 32 bit và 64 bit và Windows Executable (NE) cho Windows 16 bit. Cũng như với EXE, các tệp DLL có thể chứa mã, dữ liệu và tài nguyên, trong bất kỳ kết hợp nào.