2010-10-22 33 views
11

Khi tôi đọc về các tệp DLL trên StackOverflow, tôi đã xem xét nhiều từ "Native DLLs" nhiều lần. Tôi đã tìm thấy câu hỏi liên quan đến họ nhưng tôi không thể hiểu những gì một "Native DLL" thực sự là.DLL gốc là gì?

DLL gốc là gì?

Trả lời

15

DLL gốc có chứa mã nguồn của bộ xử lý thô có thể thực thi trực tiếp (như được tìm thấy trong API của Win32) ngược lại, ví dụ, được quản lý (MSIL) chứa mã được tiêu thụ và JIT được biên dịch theo hướng dẫn của bộ xử lý gốc theo thời gian chạy chẳng hạn như .NET CLR.

Trong .NET, bạn cũng có thể tạo tệp DLL chế độ hỗn hợp chứa cả mã nhị phân gốc và mã được quản lý.

+2

Chúng được gọi là "Gốc" vì mã chúng chứa là "gốc" đối với bộ xử lý của hệ thống, không yêu cầu dịch. – Bevan

+1

@bevan - không phải là những gì tôi vừa nói? – Kev

+0

Tôi nghĩ bạn đã bỏ quên rằng "Native" liên quan đến hệ thống lưu trữ DLL. Sau khi đọc lại, có lẽ tôi đã sai. – Bevan

2

Từ những gì tôi hiểu một "DLL gốc" sẽ là một dll Win32 cơ bản chẳng hạn. Một DLL có chứa mã không được quản lý.

Với .NET bạn viết các assembly được quản lý. Chúng sẽ gọi mã Windows cấp cơ bản giống như một ứng dụng không được quản lý sẽ gọi.

4

cụm từ này xuất hiện khi mã được quản lý đến từ các cụm .net được phát minh, để phân biệt giữa mã được quản lý và không được quản lý = mã gốc. mọi assembly .net được "tự nhiên" bởi trình biên dịch JIT trong khi thực thi. điều này có nghĩa là nó được dịch sang mã asm mà "nguyên bản" dễ hiểu đối với CPU.

2

Một cái nhìn nhanh chóng thông qua các kết quả tìm kiếm MSDN sẽ trả lời câu hỏi của bạn:

http://social.msdn.microsoft.com/Search/en-US?query=define:%20native%20dll&ac=8

Nó đơn giản một DLL có chứa mã máy, chứ không phải MSIL.

+6

Vui lòng, bạn liên kết mục tiêu hiển thị exacly bài đăng này như là số 1 phù hợp. Việc đệ quy vô tận này có thể dẫn đến một ... tràn bộ nhớ ;-) –

+0

LOL nó chỉ có thể;) – IamIC

3

Thuật ngữ DLL gốc được sử dụng trước khi mã được quản lý tồn tại. Nó ban đầu được dự định để tham khảo các DLL không phải là COM DLLs. Nó được dự định để đề cập đến các tệp DLL giống như các tệp trong Windows ban đầu.

Lưu ý rằng Kev cho biết "Trong .NET cũng có thể tạo DLL hỗn hợp chế độ chứa cả mã nhị phân gốc và mã được quản lý." nhưng điều đó không liên quan; DLL như vậy không phải là một DLL gốc vì nó có siêu dữ liệu CLI (.Net). Ngoài ra, DLL chế độ hỗn hợp chỉ có thể được phát triển bằng cách sử dụng C++/CLI; không có ngôn ngữ nào khác hỗ trợ nó.

Xem bài viết của tôi Native Windows Dynamic Link Libraries (DLLs) để biết thêm.

Các vấn đề liên quan