2016-08-18 9 views
0

У меня есть ATL DLL с кучей простейших объектов ATL (= COM-объекты), все созданные мастером.Почему ProgId не создан для этих простых объектов ATL?

Файл IDL содержит множество интерфейсов и секции библиотеки, такие как это:

[ 
    object, 
    uuid(00000000-0000-0000-0000-000000000000), 
    dual, 
    nonextensible, 
    pointer_default(unique) 
] 
interface IFoo : IDispatch{ 
    [id(1)] HRESULT FooMethod(); 
}; 
[ 
    uuid(00000000-0000-0000-0000-000000000000), 
    version(1.0), 
] 
library MyLib 
{ 
    importlib("stdole2.tlb"); 
    [ 
     uuid(00000000-0000-0000-0000-000000000000) 
    ] 
    coclass Foo 
    { 
     [default] interface IFoo; 
    }; 
} 

MSDN, кажется, говорит о том, что атрибут progid должен быть автоматически генерируется для каждого компонентного класса. Однако в моем реестре их нет. DLL в противном случае полностью нормально регистрируется в каждой компиляции и может использоваться с COM-клиентов без каких-либо проблем.

Как это может случиться так, что progid s не генерируются автоматически?

+1

Это ловушка в мастере простого объекта ATL. Вы вводите «короткое имя», и все поля автоматически заполняются, никто не учитывает значения по умолчанию. Кроме одного, похоронен в правом нижнем углу. Ага. –

ответ

0

Кажется, что я принял документацию и для сокланов IDL, ProgID не генерируется автоматически. Очень жаль.

В любом случае, here объясняется, как добавить их в файлы .rgs позже.

 Смежные вопросы

  • Нет связанных вопросов^_^