В моем коде также была функция, вызывающая CoCreateInstance (...).Когда один раз это работало, а в другое - нет, без изменения кода.
Но при просмотре возвращенного HRESULT получилась ошибка Out of Memeory, «E_OUTOFMEMORY исчерпал память».Я провел некоторое исследование относительно предметов и нашел следующие причины, по которым это может произойти.
- Сначала вы должны вызвать CoInitialize ()
Должна быть вызвана функция CoInitialize.до вызова функции CoCreateInstance
Неправильная регистрация COM-объекта
Это может часто происходить, когда COM-объект (или заглушка прокси) не был зарегистрирован должным образом.Вы можете проверить регистрацию COM-объекта с помощью инструмента Oleview, пытаясь создать экземпляр объекта.
Файл Oleview.exe входит в состав Windows SDK, расположение обычно находится в C: \ Program Files \ Microsoft SDKs \ Windows \ v6.0 \ Bin.
Если его там нет, выможете попробовать установить Microsoft Windows SDK для Windows Server 2008: http://www.microsoft.com/downloads/details.aspx?FamilyId=F26B1AA4-741A-433A-9BE5-FA919850BDBF&displaylang=en.
Примечание: это не только для Windows 2008, оно просто названо в честь последней версии Windows и поддерживает Windows Server 2003;Windows Server 2008;Виндоус виста;Windows XP.
Отсутствует, повреждены неверные версии DLL
Для меня это происходило в конфигурации разных проектов, в режиме отладки я обнаружил исключение, но в Release оно не появилось.