«Переменная объекта или переменная блока не установлена» при попытке создать COM-объект - PullRequest
0 голосов
/ 15 октября 2008

У меня есть VB6 dll, которая пытается создать COM-объект, используя следующую строку кода:

Set CreateObj = CreateObject("OPSValuer.OPSValue")

Однако, это завершается ошибкой «Переменная объекта или переменная блока не установлена».

Я вижу OPSValuer.OPSValue в dcomcnfg, и, похоже, он зарегистрирован нормально. У кого-нибудь есть идеи о том, что может быть причиной проблемы?

Ответы [ 4 ]

3 голосов
/ 15 октября 2008

Возможно, класс, который вы пытаетесь создать, установлен неправильно или не содержит некоторых зависимостей. Если у вас есть доступ к OLE View, вы можете попробовать создать экземпляр этого класса вне VB. Если он не будет создан, то у вас плохая установка или отсутствует зависимость. OLE View поставляется с Visual Studio, ищите OleView.exe в вашей системе.

Он был расположен здесь, в моей системе: D: \ Program Files \ Microsoft Visual Studio 8 \ Common7 \ Tools \ Bin

2 голосов
/ 15 октября 2008

DMKing прав насчет OleView. Также попробуйте взглянуть на элемент управления в Dependency Walker , любые недостающие зависимости должны быстро появиться.

Поскольку это компонент DCom, в конструкторе компонентов также может произойти сбой, если в конструкторе произойдет сбой, вы получите эту ошибку. Это локальный объект DCom или что-то еще на другом уровне?

Вместо CreateObject попробуйте создать его экземпляр со стандартным New и посмотреть, не выдаст ли он другую ошибку. Добавление самой ссылки может помочь в определении этой ошибки. Есть ли причина, по которой вы используете позднее связывание, а не раннее связывание?

0 голосов
/ 17 октября 2008

Если предположить, что OPSValuer.OPSValue является компонентом, написанным на VB, возможно, это ошибка, возникшая в событии Class_Initialize этого компонента. Если у вас есть источник компонента, его легко отладить.

0 голосов
/ 15 октября 2008

Ошибка может быть выдана в процедуре инициализации объекта. То, что я не нахожу "OPSValuer.OPSValue" в Google, заставляет меня думать, что это пользовательский код, который сталкивается с ошибкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...