2012-02-15 29 views
4

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

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

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

のように見える私はSTDOLE2.TLBにあるものグーグルできないのですか?それはstdole32.tlbを含んでいますか?他に何がありますか?誰かが私に助けてくれるの?

答えて

5

あなたはタイプライブラリを開いて、内部があるかを確認するには、Windows SDK COM/OLE Object Viewerを使用することができます。

enter image description here

これは、特定のインタフェースを定義し、それらを利用可能にするので、あなたは、あなたのタイプライブラリで使用できるタイプ参照によってstdole2.tlb

+0

stdole2.tlbを開こうとすると "ファイルの拡張子が間違っています"と表示されます – Alecs

+0

何か間違っているかもしれませんが、心配しないでください - 開かれたので、スクリーンショットを添付しました。 –

+0

はい、間違ったメニュー項目を使用しました。私がstdole32.tlbを開こうとすると奇妙なことにstdole2.tlb – Alecs

0

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を比較すると、新しいIDLと最初のIDLとの違いを具体的に見ることができます。主に、いくつかのインターフェースにいくつかの属性を追加し、さらに新しいtypedefやインターフェースなどを追加しています(ここに追加するには時間がかかりすぎて、質問に答える必要はありません)。

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

関連する問題