4

stdole32.tlbにはすべての基本型定義が含まれており、MIDLを使用する場合は、すべてのlibがそれをインポートする必要があります。しかし、ATL DLLプロジェクトを作成したとき、libファイルは次のようになります。

import "oaidl.idl";
import "ocidl.idl";

[
    uuid(4CA3ADAD-AE53-4D80-AF26-176BAF8223B1),
    version(1.0),
]
library FirstATLLib
{
    importlib("stdole2.tlb");
};

stdole2.tlbの内容をグーグルで検索できませんか?stdole32.tlbが含まれていますか?そして、他に何がありますか?誰かが私が見つけるのを手伝ってくれますか?

4

2 に答える 2

5

Windows SDKCOM/OLE Object Viewerを使用してタイプライブラリを開き、内部に何があるかを確認できます。

ここに画像の説明を入力してください

を参照して使用できるようにするため、タイプライブラリで使用できる特定のインターフェイスとタイプを定義しますstdole2.tlb

于 2012-02-15T19:22:43.583 に答える
1

stdole2.tlbの新しいバージョンですstdole32.tlb。これは、OleView を使用してエクスポートされた IDL から明らかです。

stdole2.tlbから:

// typelib filename: stdole2.tlb

[
  uuid(00020430-0000-0000-C000-000000000046),
  version(2.0),
  helpstring("OLE Automation")
]
library stdole
{
...

stdole32.tlbから:

// typelib filename: stdole32.tlb

[
  uuid(00020430-0000-0000-C000-000000000046),
  version(1.0),
  helpstring("OLE Automation")
]
library stdole
{
...

これは、両方が同じuuidであるstdole2が後のversion属性を持つことを観察することによって確認されます。

さらに、両方の IDL を比較すると、新しい方が最初のものとどのように異なるかを具体的に確認できます。主に、いくつかのインターフェイスにいくつかの属性を追加し、新しい typedef やインターフェイスなども追加します (ここに追加するには長すぎて、質問に答える必要はありません)。

不思議なことに、DLL とは異なり、バージョンやその他の情報を含むファイル属性 (Windows エクスプローラーの [プロパティ] ビューの [詳細] タブ) はありません。

于 2017-07-18T12:54:49.053 に答える