Как устранить ошибку vb6 dll 800a01ad в приложении c # - PullRequest
2 голосов
/ 30 апреля 2010

У меня есть DLL, которую я создал из проекта VB6, который я сейчас использую в проекте C #. Раньше это работало, но теперь, когда я пытаюсь вернуться в проект на c #, чтобы исправить ошибку, программа получает исключение COMExex, которое примерно переводится:

Не удалось создать экземпляр COM-компонента с CLSID {085E3494-9F78-47D5-B0E6-FA460FD3CBED} из IClassFactory из-за следующей ошибки: 800a01ad.

Итак, я пытаюсь создать новый пустой проект c # с одной строкой в ​​основной функции:

OurNamespace.OurClass foo = new OurNamespace.OurClass();

Что не получается с той же ошибкой.

Я зарегистрировал dll, но это не изменило исход проблемы.

Проблема возникает только на компьютере, на котором я сейчас работаю, но мне интересно понять проблему, чтобы я знал, как ее исправить, если она возникает на компьютере клиента.

Ответы [ 3 ]

5 голосов
/ 30 апреля 2010

Это переводит к ошибке VB6 времени выполнения 429, "ActiveX не может создать объект".Ошибка не в вашем коде на C #, а в коде VB6.Вы можете получить что-то только путем отладки кода VB6.Вам понадобится IDE VB6, загрузите проект библиотеки, установите программу на C # в качестве стартовой программы и установите точку останова в подпрограмме Class_Initialize класса, который вы пытаетесь создать в своем коде C #.

Работа сЕсли у вас больше нет инструментов, ошибка 429 имеет много потенциальных причин.Наиболее распространенная проблема - это проблема с регистрацией, решаемая с помощью Regsvr32.exe в DLL, которую использует код VB6.

1 голос
/ 01 мая 2010

Скомпилируйте вашу VB6 DLL с установленным набором двоичной совместимости. В противном случае GUID вашей библиотеки VB6 постоянно меняется при каждой компиляции.

1 голос
/ 30 апреля 2010

Попробуйте выполнить действия из этой статьи, чтобы узнать, поможет ли это http://support.microsoft.com/kb/194801

...