2012-09-27 31 views
11

Trong quá khứ trong khi tôi đã cố gắng tạo plugin cho một vài ứng dụng. Đây luôn là những tập tin dll và tôi đã làm theo hướng dẫn trong tài liệu SDK của ứng dụng khác nhau, nhưng tôi chưa bao giờ thực sự hiểu những gì tôi đang làm. Để khắc phục điều này tôi đã cố gắng để tìm thấy bất kỳ tài nguyên mà những giao dịch nhiều hơn với một số khía cạnh thực tiễn của chương trình trong C++, bao gồm đối phó với dlls, một danh sách ra khỏi đỉnh đầu con người tôi:Một yêu cầu cho hướng dẫn tốt về lập trình dll

  • file dll, chúng được sử dụng cho cái gì và tại sao?
  • lý do sử dụng tệp dll trên libs?
  • tệp .def đó là gì, đó có phải là điều duy nhất trên microsoft không?
  • tệp kê khai là gì?
  • ...

Về cơ bản, tất cả những lựa chọn đáng yêu mà có thể được nhìn thấy trong một IDE (Visual Studio và XCxcode cho tôi) - làm thế nào để tìm hiểu những gì họ đang có và làm thế nào để sử dụng chúng kết hợp với mã hơi phức tạp hơn viết một ứng dụng 'hello world'? Tôi đoán tôi đang tìm kiếm thêm một 'kiến trúc' về lập trình. Phần lớn tôi đã tìm thấy cho đến nay trong tất cả các cuốn sách C++ của tôi là luôn có một phần trên source code > object code > linked w/ other obj code > executable nhưng đó là như xa như nó đi.

Vì vậy, có bất kỳ sách hay nào dành cho ai đó ở vị trí mong muốn tìm hiểu nhiều hơn cú pháp C++ của tôi không? Tôi biết về mã, tôi biết về định hướng đối tượng, tôi biết về STL. Tôi cần một cuốn sách hay tài nguyên tốt cho bước tiếp theo.

Cảm ơn! (và xin lỗi nếu đó là một câu hỏi mơ hồ, nhưng nó đã đến đây)

+1

Ồ, tôi xin giới thiệu (imho defacto standard) http://www.amazon.com/Patterns-Elements-Reusable-Object-Oriented-Software/dp/0201633612/ref=wl_it_dp_o_pC_nS_nC?ie=UTF8&colid=2E0Z6RTE6OPPQ&coliid= I3O54RFCDN6EQN cho "bước trên thế giới hello". Đối với các câu hỏi khác của bạn Ill trả lời với một câu hỏi conter: bạn nhận thức được liên kết tĩnh và động? – Najzero

+0

Có thể :) Theo như tôi hiểu, liên kết động là các thư viện được liên kết trong thời gian chạy (tức là một dll) và tĩnh đang được liên kết tại thời gian biên dịch (một tệp lib). Tất nhiên, điều đó có thể sai, và thậm chí nếu nó là chính xác, tôi không có một sự đánh giá cao của tất cả những điều này từ một quan điểm kiến ​​trúc hệ thống của xem. Nếu đó là cụm từ đúng: D –

Trả lời

1

Tôi có thể giới thiệu bạn đến các tài liệu tham khảo sau đây. Xem nếu họ có bất kỳ sử dụng cho bạn.

  1. C++ DLL Programming
  2. Assemblies
+0

Tuyệt vời, tôi sẽ xem xét những điều đó - cảm ơn bạn rất nhiều. –

4

Có một tuyệt vờiarticle trên CodeProject về lập trình DLL trong C++.

+0

Trông rất tốt và chuyên sâu. Cảm ơn bạn! Nếu bạn biết bất kỳ cuốn sách bao gồm các loại chủ đề, sau đó xin vui lòng cho tôi biết :) –

9

tệp dll, chúng được sử dụng để làm gì và tại sao?

tệp dll giống hệt với tệp .exe trên Microsoft Windows (ngoại trừ 1 bit trong tiêu đề cho biết đó là tệp DLL). Một bộ nhớ dlls được chia sẻ bởi bất kỳ chương trình sử dụng nó, tiết kiệm bộ nhớ. Các dll có thể được nạp và tải xuống từ RAM theo yêu cầu, tiết kiệm bộ nhớ. Ngoài ra họ có thể được cập nhật cá nhân mà không cần phải biên dịch lại exe ​​(mà bạn có thể không có mã nguồn có sẵn.)

tại sao sử dụng file dll trên libs?

libs, còn được gọi là thư viện tĩnh, đòi hỏi sự exe được biên dịch lại mỗi khi một sự thay đổi được thực hiện, các file DLL không. Dlls lưu bộ nhớ nếu nhiều quá trình sử dụng chúng và có thể được cập nhật cho tất cả các chương trình từ một vị trí tập trung.Đối với libs bạn sẽ phải biên dịch lại và thay thế mọi .exe riêng lẻ. Các tệp dll là các tệp bổ sung PHẢI được bao gồm với tệp exe, vì vậy, các tệp có thể không tốt cho việc phân phối internet.

tệp .def đó là gì, đó có phải là điều duy nhất trên microsoft không?

.def là một tệp trình biên dịch cụ thể cho trình biên dịch biết cách dll (API) nên được trình bày trong bộ nhớ. Chúng có thể được tìm thấy trong nhiều trình biên dịch khác nhau bao gồm gcc, mặc dù các tính năng được hỗ trợ và cú pháp khác nhau.

tệp kê khai là gì?

Tệp kê khai mới đối với Windows XP SP3, về cơ bản nó cho Windows biết phiên bản của thư viện hệ thống nào cần cũng như nhị phân cần đặc quyền quản trị viên chạy. (Hãy nhớ rằng một dll chỉ là một exe với một chút khác nhau). Tôi tin rằng một manfest cũng được sử dụng trong ký mã, xác minh nếu thực thi là hợp pháp.

+0

Cảm ơn bạn - những thứ rất hữu ích. Bây giờ, tất cả những gì tôi cần là một cuốn sách nói về những điều này, vì vậy tôi có thể đặt chúng vào một bối cảnh lớn hơn. –

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