Не удалось получить фабрику классов COM для компонента с CLSID из-за следующей ошибки: 8007045a.

Я новичок в VB Dot Net. Я использую ComponentOne True OLE DbGrid в своей форме. Теперь мне нужно добавить элементы значения в мой столбец. Итак, я попробовал это: TDBGrid1.Columns(14).ValueItems.Add(New TrueOleDBGrid80.ValueItem()) TDBGrid1.Columns(14).ValueItems(2).Value = 2 My код компилируется и работает хорошо. Но когда я пытаюсь запустить исполняемый файл на клиентской машине, он выдает ошибку: «Не удалось получить фабрику классов COM для компонента с CLSID из-за следующей ошибки: 8007045a» для указанной выше строки ValueItems.Add(). Помогите пожалуйста мне. Спасибо


person kishan    schedule 19.11.2013    source источник
comment
Это ошибка Windows, 1114 = ERROR_DLL_INIT_FAILED. Используемая вами DLL вернула FALSE из точки входа DllMain(). Оно чем-то недовольно, невозможно догадаться почему. Посмотрите в журнале событий Windows более подробное диагностическое сообщение. Если вы его не видите (вероятно) или не понимаете, о чем он говорит, вам необходимо обратиться за поддержкой к поставщику компонента.   -  person Hans Passant    schedule 19.11.2013
comment
@HansPassant .. Я просмотрел журналы событий Windows, но ничего там не нашел. Я зарегистрировал все свои файлы .ocx (todg8.ocx, todb8.ocx, xadb8.ocx). Не могу разобраться в проблеме. Он появляется только тогда, когда я использую приведенные выше строки для добавления элементов значения в свои столбцы, и когда я комментирую строки, он работает нормально.   -  person kishan    schedule 20.11.2013
comment
@HansPassant .. Также я не могу изменить свойства своей сетки во время разработки ..   -  person kishan    schedule 20.11.2013


Ответы (2)


Проблема, по-видимому, связана с разницей в процессоре, на котором приложение было создано и запущено. Вы можете найти соответствующую dll в следующих местах, использовать ее в своем проекте и посмотреть, решит ли она вашу проблему: 64-разрядная машина: HKEY_CLASSES_ROOT\CLSID{###}\InprocServer32 32-разрядная машина: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes \CLSID{###}\InprocServer32.

Еще несколько предложений можно найти по следующим ссылкам:

Как исправить ошибку COMException 80040154?

Получение класса COM factory для компонента с CLSID {XXXX} не удалось из-за следующей ошибки: 80040154 VB.net

С уважением, Мохита

person Mohita    schedule 15.01.2014

Попробуйте перерегистрировать TdbGrid8 из командной строки: regsvr32 c:pathtdbg8.ocx Спасибо, Рича.

person Richa    schedule 15.01.2014