2010-06-07 7 views
1

Вот мой сценарий. Я использую Quicktest Pro (VB) для создания объекта ActiveX из Labview VI, который я встроил в исполняемый файл. В спецификациях сборки VI я включил опцию ActiveX Server (имя сервера ActiveX: «MyLabviewProgram»), а в VI Tools> Options> VI Server: Configuration установлен флажок ActiveX.Почему ActiveX не удается создать объект из исполняемого файла Labview?

Так в QTP мой код:

Set IvApp = CreateObject("MyLabviewProgram.Application") 
Set Vi = IvApp.getVIReference("MyLabviewVI.vi") 
Vi.Call ParamNames, ParamVals 

После запуска этого я получаю Run Error на первой линии:

ActiveX компонент не может создать объект: 'MyLabviewProgram.Application'

У меня возникли проблемы с выяснением причин ошибок. На веб-сайте National Instruments у них есть один шаг на одной из своих страниц сообщества о «LabVIEW Executable, используемом в качестве сервера ActiveX». Шаг после создания EXE, 5. Запустите EXE хотя бы один раз на цель, чтобы активировать файл .TLB. Я запускаю исполняемый файл, но не уверен, что они подразумевают под прицелом.

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

ответ

1

Ваше описание похоже на то, что вы правильно создали vi .exe. «На цели», вероятно, означает «На целевом ПК». EXE добавляет все записи регистрации COM в реестр Windows каждый раз, когда он выполняется.

Похоже, вы еще не подтвердили, что записи регистрации COM присутствуют в реестре. Это первый шаг отладки.

Запустить regedit.exe и выполнить поиск по MyLabviewProgram.Application под HKEY_CLASSES_ROOT под-ключ. Вы должны найти запись, содержащую под-ключ, который содержит значение, которое содержит GUID (большое шестнадцатеричное число).

К этому «идентификатору класса» GUID следует подходить под ключ HKCR/CLSID. Эта ссылка должна содержать подквал LocalServer32 со значением по умолчанию, указывающим на путь файла .EXE вашего приложения с добавленным аргументом /Automation.

Похоже, что один из этих шагов не удастся. Я не могу точно сказать, какой из них без дополнительной информации.

+0

Спасибо, делая это, я заметил, что имя сервера ActiveX, которое я дал, было «_», но в разделе HKEY_CLASSES_ROOT оно было показано там без подчеркивания. i.e имя моего ActiveX-сервера было «MyLabview_Program» , а раздел реестра был «MyLabviewProgram» Я предполагаю, что, поскольку я переименовал их в качестве общего в мой пост, я должен по-прежнему включать в себя любые специальные символы, которые я использовал. – Timmy16bmx

Смежные вопросы