Название: Ошибка при вызове функции COM сервера Отправлено: AVR от Ноябрь 14, 2011, 21:53 Добрый вечер.
Ситуация такая: есть замечательный отечественный прибор "Ретом 51". Требуется написать программу управления прибором. Операционка XP SP2. Версия QT 4.7.4 Производитель предоставляет интерфейс для работы с прибором в виде COM сервера и кое-какое описание всего этого. Делаю так: создаю в QT Creator-е новый проект, прописываю в файле .pro: TYPELIBS = RTDI.tlb ,где RTDI.tlb -файл, предоставленный производителем dumpcpp создаёт файлы RTDI.cpp и RTDI.h. Подключаю их к проекту. Вот файл ret.pro: Код: QT += core gui В файле mainwindow.h прописываю: using namespace RTDI; Дальше : Код: MainWindow::MainWindow(QWidget *parent) : Вот, что говорит о функции Check фирменная документация: Цитировать Check long Check (VARIANT* vRTList); Описание: Осуществляет поиск подключенных к компьютеру приборов РЕТОМ-51. Возвращаемое значение: В случае успешного завершения ненулевое значение, в противном случае «0». Параметры: vRTList Массив записей типа IRTListDevice, через который возвращается список подключенных приборов. А так выглядит её прототип в файле RTDI.h: Код: inline int DualServer::Check(QVariant& vRTList) Вывод приложения при возникновении ошибки выглядит так: Цитировать ASSERT: "id < 0" in file c:\ndk_buildrepos\qt-desktop\src\activeqt\container\qaxbase.cpp, line 3717 Что это за файл такой qaxbase.cpp я так и не понял.Второй день сижу. Много уже чего перечитал и перепробовал. Идеи кончились. ??? Подскажите, в каком направлении ещё можно по копать. Название: Re: Ошибка при вызове функции COM сервера Отправлено: pashandr от Март 13, 2012, 13:21 AVR У меня такая же проблема, с такой же ошибкой вылетает приложение. Не знаю что делать.
Название: Re: Ошибка при вызове функции COM сервера Отправлено: Bepec от Март 13, 2012, 13:35 Берём дебаггер. Запускаем. Идём по функциям и смотрим что у вас там творится.
Через 15 минут находим место ошибки. Невтупляем сами, зато выкладываем на форум. Название: Re: Ошибка при вызове функции COM сервера Отправлено: popper от Март 13, 2012, 23:19 попробуй заменить
Код: QVariant *list=new QVariant; Код: IRTListDevice *list; |