2009-04-17 24 views
6

Tôi chưa bao giờ làm việc với COM trước đây và tôi đã được giao nhiệm vụ viết một ứng dụng sử dụng một số đối tượng COM của bên thứ ba. Nếu bất cứ ai có thể chỉ cho tôi một số hướng dẫn tốt về cách sử dụng chúng nó sẽ được nhiều đánh giá cao. Ngay lập tức, có vẻ như tôi chưa cài đặt Thư viện Mẫu Hoạt động. Tôi đã tìm kiếm trực tuyến nhưng không thể tìm ra cách để có được nó.Tôi có thể lấy Thư viện Mẫu Hoạt động ở đâu?

+1

Vào tháng 11 năm 2014, Microsoft đã phát hành miễn phí »Phiên bản cộng đồng« của Visual Studio 2013 Update 4, bao gồm cả ATL và MFC. Kể từ tháng 1 năm 2016, chúng vẫn là một phần của Visual Studio 2015 Community Edition. – Lumi

Trả lời

3

Như Dan đã chỉ ra, chúng được phân phối với Visual Studio.

Nếu bạn không có Visual Studio, bạn có thể nhận được các thư viện ATL từ một trong những Microsoft Visual C++ gói Redistributable:

Lưu ý: Số được đánh dấu năm 2005 là phiên bản 8 (atl80.dll), được đánh dấu năm 2008 là phiên bản 9 (atl90.dll).

+1

Điều đó sẽ không giúp bạn có được tiêu đề để bạn thực sự có thể viết mã ATL, phải không? – jeffm

+0

Tôi chưa từng làm việc với ATL. Tôi chỉ giả định nó đã được thực hiện thông qua các cuộc gọi DLL. – Powerlord

+0

Tôi không thấy thành phần atl khi tôi nhấp vào thêm mục trong dự án atl của tôi. Không có Visual C++/ATL loại –

4

Đó là một phần của Microsoft Visual Studio (nhưng không phải là Express Edition.)

3

Tôi nghĩ rằng bạn phải sở hữu một bản sao của Visual Studio 2005 hoặc 2008 (không thể hiện) để có được ATL. Nếu bạn có một trong những cài đặt, nhưng bạn không có ATL sau đó đi đến "Control Panel: Add/Remove Programs" và làm một "Sửa đổi" cài đặt (với chương trình CD hoặc DVD trong ổ đĩa) và chắc chắn rằng hộp cho ATL được chọn.

2

Đối với hướng dẫn:

tôi đã không tìm thấy một ai thực sự tốt trên mạng. Có một vài trang OK sử dụng ATL/COM:

  • The Active Template Library Makes Building Compact COM Objects a Joy bởi Don Box (cựu chiến binh của COM). Bài viết này bắt đầu: "Tôi yêu COM. COM là tốt. Giống như một pilsner tốt hoặc ale, COM không bao giờ thất vọng. Trong thực tế, tôi càng xem COM, số tôi thích nó hơn. Thật không may, tôi làm việc in C++ và C++ không chia sẻ sự đánh giá cao của tôi đối với những điều tốt đẹp hơn trong cuộc sống . Mặc dù số tiền là của Grand Master, và thực tế là nó là 12 tuổi bây giờ, nó là khá tốt bài viết ...
  • Tuyệt vời của Mike Dunn tutorial on COM trên CodeProject.
  • DevGuy's C++ COM Tips - một loạt các liên kết và đề xuất.
  • The COM Programmer's Cookbook - bài viết cổ đại (1995) này không phải là xấu, mặc dù tuổi tác của nó và thực tế là nó mô tả thực hiện các đối tượng COM trong C thay vì C++ (vtables rõ ràng!)

Tôi là một chút gỉ bản thân mình w/COM và ATL, nhưng nếu tôi nhớ không nhầm, các lớp học bạn sẽ muốn biết rằng bạn sẽ sử dụng nhiều nhất (đặc biệt nếu bạn đang sử dụng đối tượng COM của người khác thay vì thực hiện của riêng bạn) là CComBSTR, CComPtr và CComVariant. Ngoài ra câu lệnh #import trong Visual C++ làm cho việc sử dụng các đối tượng COM bên ngoài dễ dàng hơn nhiều, nó tạo ra một lớp con trỏ thông minh cho bạn từ một DLL bên ngoài hoặc EXE.

Nếu bạn sắp triển khai các đối tượng COM, tôi thực sự khuyên bạn nên lấy một bản sao của ATL Internals (có một phiên bản mới hơn hiện đã bao gồm ATL v8). Có nó đi vào một số chi tiết đẫm máu trong phần, nhưng ngay cả khi một cuốn sách giới thiệu nó khá tốt bằng văn bản.

Nếu bạn chưa bao giờ sử dụng COM trước đó, sách "cổ điển" Essential COMEffective COM rất tốt và bạn có thể nhận chúng rẻ tiền từ các nguồn sách bạn đã sử dụng. Bạn cũng sẽ muốn rất quen thuộc với thành ngữ RAII, nếu bạn chưa quen.

Nhóm tin microsoft.public.vc.atl rất tốt để đặt câu hỏi cụ thể. (họ có xu hướng càng thô lỗ hơn trên StackOverflow, mặc dù)

Hãy coi chừng: Có rất nhiều gotchas nhỏ với COM, mặc dù ATL giúp nó trở nên dễ dàng hơn rất nhiều & mà không có rất nhiều sưng lên. Các kỹ thuật "mô phỏng động" được gọi là CRTP hữu ích trong thế giới C++, không chỉ trong ngữ cảnh của ATL/COM mà đặc biệt là nếu bạn đang phát triển một thư viện các lớp tái sử dụng mà bạn muốn phân lớp hoặc trộn trong các tình huống mà chỉ có một cá thể có mặt tại một thời điểm (ví dụ lớp CSpiffyFramework cung cấp chức năng mixin mà bạn muốn sử dụng lại rất nhiều, và bạn có một lớp dẫn xuất mà bạn muốn bao gồm chức năng đó, và nó không phải là một phần của mô hình đối tượng ảo. cần một vtable).

Chúc may mắn!

0

Tôi đã cài đặt này: http://www.microsoft.com/en-us/download/details.aspx?id=3138 và nhận trình biên dịch C++ và tất cả nội dung trên máy chủ xây dựng của tôi, nhưng không có thư viện ATLMFC. Các gói redist liên kết ở trên chỉ là, redistributables, không phải là tiêu đề và includefiles cần thiết .. Sau nhiều tìm kiếm, tôi đã kết thúc cài đặt vs2008 trên máy chủ, crap.

-1

ở đây là làm thế nào để sử dụng atl với vs nhanh:

bạn cần WDK 7.1.0:

https://www.microsoft.com/en-us/download/details.aspx?id=11800

  1. Tải Visual Studio Express Edition

    Nhận VS Express C++ miễn phí từ Microsoft

  2. Tải về tiếp cận miễn phí Windows Driver Kit (7.1 hoặc mới hơn) từ Microsoft

    Nhận WDK 7.1.0 miễn phí từ Microsoft

    Bạn có thể mount file ISO với Virtual Clone Drive hoặc giải nén nó với 7-zip.

  3. Cài đặt WDK và chọn "Xây dựng môi trường" tùy chọn

    này sẽ cài đặt các ATL và MFC header và file lib. ATL là một yêu cầu cho FireBreath trên cửa sổ. Hãy chắc chắn để cài đặt này trong vị trí mặc định để FireBreath thể tìm thấy nó

  4. Đối với VS Express 2010

    Nếu bạn đang sử dụng một phiên bản cũ của FireBreath, bài này bằng cách scjohn có thể hữu ích cho bạn. Lưu ý rằng FireBreath 1.4 beta 1 và sau đó các bước này không còn cần thiết nữa!

http://www.firebreath.org/display/documentation/Building+with+Visual+Studio+Express

[VS2010 hiện bao gồm path]

C: \ WinDDK \ 7600.16385.1 \ inc \ atl71

[VS2010 bày tỏ con đường lib]

C: \ WinDDK \ 7600.16385.1 \ lib \ ATL \ i386

+0

Đây là lỗi thời và sai tổng thể. ATL được bao gồm trong phiên bản "Cộng đồng" miễn phí của một vài phiên bản cuối cùng của Visual Studio. Không cần phải cài đặt WDK, và sau đó ATL của WDK là một phiên bản giảm. –

+0

@RomanR. tôi hy vọng bạn là đúng, nhưng nhìn vào liên kết này: https://stackoverflow.com/questions/3898287/c-include-atlbase-h-is-not-found và phiên bản cộng đồng không phải là miễn phí cho mục đích thương mại ở điều kiện nhất định. phiên bản thể hiện chỉ hy vọng cuối cùng hoặc mingw, clang vv – sailfish009

+0

Câu hỏi được liên kết có câu trả lời với ảnh chụp màn hình có hộp kiểm tra để nhận ATL. Lưu ý rằng ATK của WDK mà bạn liên kết là '_ATL_VER = 0x0800' tương ứng với [Visual Studio 2005] (http://mariusbancila.ro/blog/2015/08/12/version-history-of-vc-mfc-and-atl /). Không chỉ nó không có ý nghĩa cho phát triển với các bộ công cụ hiện tại, mã không cần phải biên dịch và không phải chạy một cách an toàn (2005 ATL có các vấn đề liên quan đến DEP nói riêng). –

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