私はこれまで COM を扱ったことがなく、いくつかのサード パーティの COM オブジェクトを使用するアプリケーションの作成を任されていました。誰かがそれらの使用方法に関するいくつかの優れたチュートリアルを教えてくれれば、それは大歓迎です. さらにすぐに、Active Template Library がインストールされていないようです。ネットで調べたのですが入手方法がわかりません。
6 に答える
Dan が指摘したように、これらは Visual Studio と共に配布されます。
Visual Studio がない場合は、Microsoft Visual C++ 再頒布可能パッケージのいずれかから ATL ライブラリを取得できます。
- 2005 SP1 (32 ビット)
- 2005 SP1 (64 ビット)
- 2005 (イタニウム)
- 2008 SP1 (32 ビット)
- 2008 SP1 (64 ビット)
- 2008 SP1 (Itanium)
注: 2005 とマークされたものはバージョン 8 (atl80.dll) であり、2008 とマークされたものはバージョン 9 (atl90.dll) です。
ATL を取得するには、Visual Studio 2005 または 2008 (Express ではない) のコピーを所有する必要があると思います。それらのいずれかがインストールされているが、ATL がない場合は、[コントロール パネル: プログラムの追加と削除] に移動し、[変更] インストールを実行して (プログラム CD または DVD をドライブに挿入して)、ボックスが正しいことを確認します。 for ATL がチェックされます。
チュートリアルに関しては:
私は本当に良いものをオンラインで見つけていません。ATL/COM の使用に関するいくつかの OK ページがあります。
- Active Template Libraryにより、Don Box (COM のベテラン グル) によるコンパクトな COM オブジェクトの構築が楽しくなります。この記事は次のように始まります。「私は COM が大好きです。COM は良いものです。上質なピルスナーやエールのように、COM は決して失望することはありません。実際、COM を見れば見るほど、ますます好きになります。残念ながら、私は C++ で作業しており、C++ も使用しています。人生のより素晴らしいものに対する私の感謝を共有しないでください。」グランド マスターの改宗と、現在 12 歳であるという事実にもかかわらず、それはかなり良い記事です...
- CodeProjectのCOMに関するMike Dunn の優れたチュートリアル。
- DevGuy の C++ COM のヒント-- リンクと提案の寄せ集めです。
- The COM Programmer's Cookbook -- この古い記事 (1995 年) は悪くありませんが、古い記事であり、COM オブジェクトの実装を C++ ではなく C で記述している (明示的な vtables!) にもかかわらずです。
私自身、COM と ATL には少し慣れていませんが、私の記憶が正しければ、習得したいと思うであろうクラスを最もよく使用することになります (特に、自分の COM オブジェクトを実装するのではなく、他の誰かの COM オブジェクトを使用している場合)。 own) は、CComBSTR、CComPtr、および CComVariant です。また、Visual C++ の #import ステートメントにより、外部 COM オブジェクトの使用がはるかに簡単になり、外部 DLL または EXE からスマート ポインター クラスが生成されます。
COM オブジェクトを実装する場合は、ATL Internalsのコピーを入手することを強くお勧めします(現在、ATL v8 をカバーする新しい版が出ています)。はい、いくつかのセクションで詳細に説明されていますが、入門書としてもかなりよく書かれています.
以前に COM を使用したことがない場合は、「古典的な」書籍であるEssential COMおよびEffective COMが非常に優れており、お気に入りの古本から安価に入手できるでしょう。また、 RAIIのイディオムについても、まだ十分に理解していない場合は、十分に理解しておく必要があります。
ニュースグループmicrosoft.public.vc.atlは、特定の質問をするのに非常に適しています。(ただし、StackOverflow よりも粗雑になる傾向があります)
注意: COM には多くの小さな落とし穴がありますが、ATL を使用すると、COM が大幅に肥大化することなく、はるかに簡単になります。CRTPとも呼ばれる「シミュレートされた動的バインディング」手法は、ATL/COM のコンテキストだけでなく、特にインスタンスが 1 つしかない状況でサブクラス化またはミックスインする再利用可能なクラスのライブラリを開発している場合に、C++ の世界で役立ちます。一度に存在する (たとえば、何度も再利用したい mixin 機能を提供するクラス CSpiffyFramework、およびその機能を含めたい派生クラスがあり、それは仮想オブジェクト モデルの一部ではないため、実際にはvtable が必要です)。
幸運を!
私はこれをインストールしました:http://www.microsoft.com/en-us/download/details.aspx?id=3138、ビルドサーバーにC++コンパイラとすべてのものを入手しましたが、ATLMFCライブラリはありませんでした。上にリンクされた再配布パッケージは、必要なヘッダーやインクルードファイルではなく、再配布可能パッケージです..多くの検索の後、サーバーにvs2008をインストールすることになりました。