Debug & amp; Версия выпуска OCX несовместима & quot; Переменная использует тип автоматизации, не поддерживаемый в Visual Basic & quot;

У меня есть устаревший элемент управления OCX, встроенный в VS2010 и используемый в VB6 ActiveX EXE. Когда я регистрирую отладочную версию OCX и пытаюсь собрать ее с VB6, я получаю сообщение об ошибке AutoTypeNotSupportedInVB

Если я регистрирую версию Release, то контейнер VB ActiveX EXE компилируется и запускается. Я сделал онлайн-поиск этой ошибки, но результаты не очень информативны. Не совсем понятно, означает ли ошибка, что она вообще не может найти тип OCX, или если в интерфейсе OCX есть тип, который VB не поддерживает. Ошибка указывает на первую попытку использования объекта OCX в исходном коде VB.

170 m_SignCaptureForm.SigPlus1.TabletComTest = False

Где SigPlus1 — это объект OCX. Глядя на TypeInfo из OLE / COM Object Viewer единственные различия, которые я вижу между Debug и Release, заключаются в том, что все возвращаемые типы BOOL определены как голец в версии Debug и как VARIANT_BOOL в версии выпуска.

======== OLE / COM Object Viewer TypeInfo для отладки ========

      char TabletLCDMode;
[id(0x00000010)
]

========= OLE / COM Object Viewer TypeInfo для выпуска ========

      VARIANT_BOOL TabletLCDMode;
[id(0x00000010)
]

В исходном коде OCX нет ничего, что могло бы повлиять на то, что эти объявления будут другими в Debug vs Release. Я спрашиваю, почему я получаю эту ошибку, и если причина в разнице в типах BOOL, что для этого нужно?

ocx.h:    afx_msg BOOL GetTabletLCDMode();
ocx.cpp:  DISP_PROPERTY_EX(CSigPlusCtrl, "TabletLCDMode", GetTabletLCDMode, SetTabletLCDMode, VT_BOOL)

3

Решение

После @A. Предложение изучить параметры свойства для файла ODL проектов OCX (SigPlus.odl) я нашел решение.

Были различия в настройках Release и Debug при просмотре свойства для файла SigPlus.odl. Чтобы получить доступ к свойствам ODL, щелкните правой кнопкой мыши файл .ODL в исходных файлах в обозревателе решений. Параметр, который заставлял сборку Debug объявлять bools, поскольку char был MkTypeLib Совместимость вариант. Для отладочной сборки было установлено значение «Нет», а для версии «Релиз» — «Да». Как только я изменил отладочную сборку на Совместимо с MkTypeLib: Да затем TypeInfo из OLE / COM Object Viewer показал bools как VARIANT_BOOL точно так же, как сборка Release, и контейнер VB ActiveX EXE теперь успешно собирается.

введите описание изображения здесь
введите описание изображения здесь

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]