Рассмотрим этот код:"класс не зарегистрирован", какой класс?
try {
ISomeObject pObj(__uuidof(SomeClass));
ISomeObject pObj2(__uuidof(SomeOtherClass));
} catch (_com_error& e) {
// Log what failed
}
И.Э. У меня есть блок кода, который инициализирует мои объекты. Иногда (плохая установка) он не работает, потому что какой-то класс не был должным образом зарегистрирован. (У меня нет конкретной проблемы, довольно общая дискуссия здесь.)
Есть ли какой-либо способ, из пойманного исключения или иначе, понять, какой класс не удалось? A задумались сделать свою собственную упаковку, в которой хранится переменная типа gLastCreateAttemptUuid, но она кажется громоздкой.
Кроме того, предположим, что SomeClass в свою очередь пытается создать что-то еще, что не зарегистрировано. Можно ли затем выяснить основной вопрос?
Тот факт, что _com_error попадает, означает, что OP не использует ATL, но вместо этого использует «встроенную поддержку COM» (_com_ptr_t), если я правильно помню. –