У меня есть набор COM-проектов Visual C ++ 9, зависящих друг от друга.
ComponentA публикует свою библиотеку типов в ComponentA.tlb
. ComponentB импортирует ComponentA.tlb
в ComponentB.idl
и публикует ComponentB.tlb
. Сигнатуры методов в ComponentB.idl
содержат параметры типов, определенных в ComponentA.tlb
. Проекты ComponentA и ComponentB компилируются без ошибок.
ComponentC #import
с ComponentA.tlb
и ComponentB.tlb
в stdafx.h
- это неожиданно завершается с
error C4772: #import referenced a type from a missing type library;
и позже набор
error C2440: 'return' : cannot convert from '__missing_type__ *' to '__missing_type__'
для упаковщиков, использующих типы, определенные в ComponentA.tlb
. Обычно это происходит, когда ComponentA.tlb
не зарегистрирован, но я, безусловно, запускаю regtlib
и вижу в regedit, что оно зарегистрировано. ComponentA.tlb
присутствует точно по пути, указанному в реестре.
В чем источник проблемы и как ее можно решить?