Невозможно загрузить VB6 OCX в Windows 7 Ошибка 372 - PullRequest
3 голосов
/ 19 октября 2011

Я работаю над приложением, разработанным для Windows XP SP3, с использованием VB6. В настоящее время я пытаюсь заставить его работать в Windows 7, но у меня возникла проблема с одним из наших пользовательских файлов OCX.

При попытке загрузить форму, которая содержит экземпляр элемента управления, содержащегося в проблеме OCX, выдается следующая ошибка:

Не удалось загрузить элемент управления 'x' из y.ocx. Ваша версия y.ocx может быть устаревшей. Убедитесь, что вы используете версию элемента управления, которая была предоставлена ​​с вашим приложением.

Я проверил номера версий, и все они верны и ссылаются на правильную версию. OCX регистрируется нормально, и все ожидаемые записи реестра присутствуют.

Инспекция с DependencyWalker не показывает отсутствующие зависимости.

Программное обеспечение отлично работает под XP, и это (на первый взгляд) единственная проблема при работе в Windows 7.

Интересно, что если я запускаю среду IDE VB6 с помощью группы VB6 (с нарушающей частью группы OCX и приложением, запускающим проект), у меня нет проблемы. Самостоятельный запуск приложения через IDE по-прежнему приводит к ошибке.

Есть идеи о том, что может отсутствовать, что может привести к тому, что приложение выдаст эту ошибку?

Ошибка возникает как в Windows 7 Professional, так и в Home Professional, оба 32-разрядных.

Ответы [ 3 ]

4 голосов
/ 19 октября 2011

Это почти наверняка проблема совместимости интерфейса.Версии COM-интерфейсов полностью отделены от ваших основных / второстепенных / ревизионных номеров, которые немного больше, чем комментарии, за исключением того, что используется установщиком.

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

Эти номера версий находятся в таких ключах, как:

HKEY_CLASSES_ROOT\CLSID\{class Id GUID}\VERSION

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

Я сомневаюсь, что это проблема Windows 7.

0 голосов
/ 21 октября 2011

Похоже, что на элементах управления, включенных в OCX, возникают проблемы с загрузкой, а не общая ошибка регистрации. Посмотрите на конструкторы для x control и посмотрите, делают ли они что-либо, что не соответствует UAC или тому подобное. Один из способов отладки - это сделать некоторый перерыв перед инициализацией элемента управления и отладить приложение из Visual Studio (не забудьте создать PDB в VB6), а затем продолжить работу с перерыва, чтобы понять, почему элемент управления не ' t инициализация.

0 голосов
/ 19 октября 2011

Я подозреваю, что это проблема UAC. Попробуйте отключить UAC , чтобы посмотреть, решит ли это непосредственную проблему. Если это произойдет, то вам придется пересмотреть все, используя ' Запуск от имени администратора ' и / или , чтобы создать манифест для вашего приложения.

...