Что такое stdole2.tlb - PullRequest
       40

Что такое stdole2.tlb

4 голосов
/ 15 февраля 2012

stdole32.tlb содержит все определения базовых типов, и каждая библиотека должна импортировать ее, если мы используем MIDL.Но когда я создал проект библиотеки ATL DLL, файл lib выглядит следующим образом

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

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

Я не могу Google, что находится в stdole2.tlb?Содержит ли он stdole32.tlb?И что еще?Может кто-нибудь поможет мне узнать?

Ответы [ 2 ]

5 голосов
/ 15 февраля 2012

Вы можете использовать Windows SDK COM/OLE Object Viewer, чтобы открыть библиотеку типов и посмотреть, что там внутри:

enter image description here

Он определяет определенные интерфейсы и типы, которые вы можете использовать в вашем типебиблиотека, так как вы делаете их доступными посредством ссылки stdole2.tlb.

0 голосов
/ 18 июля 2017

stdole2.tlb является более новой версией stdole32.tlb.Это видно из IDL, экспортированного с использованием OleView:

From stdole2.tlb :

// typelib filename: stdole2.tlb

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

From 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) с версией или другой информацией.

...