Ошибка VB6 - не удается загрузить файл .ocx - PullRequest
4 голосов
/ 13 июля 2009

Я большую часть дня пытался загрузить файл OCX в один из моих проектов VB6. Я попытался проверить регистрацию COM в реестре, насколько я знаю, и несколько раз пытался использовать REGSVR32 для файла, но безрезультатно. Все, что я продолжаю получать из VB6, когда пытаюсь загрузить компонент (в разделе Project -> Components), это «FilePath \ FileName.ocx», который не может быть загружен. Кто-нибудь еще видел это раньше, и если да, есть идеи, как это исправить?

Ответы [ 8 ]

3 голосов
/ 13 июля 2009

Просто пара советов, которые помогут изолировать проблему ....

Посмотрите на элемент управления с OleView

Проверьте имя: если это одно из зарезервированных слов, таких как «Меню», vb6 не сможет его загрузить. (Хотя vb6 с радостью позволит вам создать (и использовать) с плохим именем, пока он не будет сохранен и перезагружен)

Изучите интерфейс: описывает ли он функциональность? У вас может быть поврежденный или нелицензированный ocx.

Попытка загрузить его с помощью контрольного контейнера ActiveX ... Если можете, проблема в VB6, а не в ocx.

2 голосов
/ 01 декабря 2012

Мы недавно исправили подобную ошибку. В нашем случае ошибка была в файле проекта Visual Basic (.vbp). Файл проекта был отредактирован вне стандартизированной машины сборки и содержал ссылки на компоненты OCX, включая пути и версии компонентов для конкретной рабочей станции.

Вы можете отредактировать файл проекта в текстовом редакторе или получить рабочую версию из системы управления версиями.

2 голосов
/ 14 июля 2009

Это может быть проблема зависимости - какого-то другого компонента, необходимого для OCX, нет. Зависимость Уокер найдет любые статические зависимости.

0 голосов
/ 26 апреля 2015

Отмена регистрации и повторная регистрация работали для меня тоже.
Обратите внимание, что вам нужно зарегистрировать этот компонент, используя следующий синтаксис:

regsvr32 /i:design olch2x8.ocx
0 голосов
/ 24 декабря 2013

Un зарегистрировать OCX перерегистрировать окс затем снова загрузил проект в VB6, у меня все заработало.

Спасибо всем

0 голосов
/ 14 июля 2009

Элемент управления может зависеть от другой библиотеки DLL или OCX, которая может отсутствовать или не зарегистрирована, и этот может проявить себя как VB, сообщающий, что элемент управления, который вы пытаетесь использовать, отсутствует. Однако я не уверен, как бы вы определили зависимости. Насколько я знаю, обходчик зависимостей идентифицирует статические зависимости; Я не уверен, что он может идентифицировать зависимости COM.

0 голосов
/ 14 июля 2009

Помимо лицензирования, есть пара других пунктов поездки с vb6. Особенно , если OCX был разработан в VB6.

Если это так, «официально» зарегистрированная в системе версия может конфликтовать с конкретным ocx, который вы используете. Другими словами, оба могут иметь одно и то же собственное имя (или classid), но тот, который вы пытаетесь использовать, может не реализовывать все функции, описанные в зарегистрированной системе (т. Е. У вас менее развитая версия). Это возникает, когда автор желает поддерживать двоичную совместимость, одновременно улучшая функциональность элемента управления. Пока открытые интерфейсы остаются совместимыми, vb не будет пересчитывать classid.

Вы можете исправить это, принудительно отменив регистрацию конкретного элемента управления (фактически отмените регистрацию всех экземпляров элемента управления). (regsvr32 / u control.ocx) Затем заново зарегистрируйте тот, который вы собираетесь использовать. Убедитесь, что при этом не существует запущенного экземпляра VB6, иначе результаты могут не работать. (Проверьте список задач)

Надеюсь, это поможет ...

0 голосов
/ 14 июля 2009

Когда вы говорите, что использовали «REGSVR32 для файла безрезультатно», вы имеете в виду, что вы получаете имя файла сообщение об ошибке или сообщение об ошибке? Если регистрация файла прошла успешно, CMB, вероятно, прав в том, что ocx не лицензирован.

...