На главную... Продукты | Технологии | Классификаторы | Проекты | Скачать | Цены| Форум | Статьи | Обучение | Контакты

подключение ActiveX библиотеки на Qt через dumpcpp

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: 1
RSS
подключение ActiveX библиотеки на Qt через dumpcpp
 
Версия GIS ToolKit 14.0. Мне хотелось бы задать вопрос по работе с GIS ToolKit Active free на Qt. Как я понял, для того чтобы у меня была возможность использовать перечисляемые типы и другие методы API, мне нужно подключить библиотеку axGisToolKit.ocx. При подключении через dumpcpp на Qt, генерируются файлы axGisToolKit.h и axGisToolKit.сpp. Но при попытке импортировать сгенерированные файлы, появляется большое количество ошибок типа “use of undefined type” (как в прикрепленном скриншоте). Я пробовал и с компиляторами MinGW, и c MSVC на разных версиях Qt, но безрезультатно. Вы не могли бы подсказать, в чем проблема? Или как по другому можно получить доступ к перечислимым типам(типа TxRect)?  
 
Давайте по порядку.
Во-первых, в какой среде разработки Вы разрабатываете приложение?
Во-вторых, что из состава GIS ToolKit Active Вы собираетесь использовать?
Можно выполнять разработку на основе компонентов, можно без них - на основе MAPAPI-функций ГИС-ядра, можно и то, и другое.

Для того, чтобы применять компоненты, библиотека axGisToolKit.ocx (оба варианта - x32 и x64) должна быть штатным образом зарегистрирована в системе.
Если разрабатывать без них, на чистом MAPAPI-интерфейсе, это не обязательно.

Для использования структур и прочих типов данных для MAPAPI надо подключать библиотеки ГИС-ядра (статически или динамически) и использовать заголовочные файлы с объявлением прототипов функций.

Для использования типов данных GIS ToolKit компоненты регистрируются в среде разработки (в разных средах по-разному). Например, в MSVS при регистрации компонентов GIS ToolKit Active пространство имен создается автоматически и содержит описание всех необходимых типов.
Возможно, есть какие-то нюансы использования dumpcpp.
Лично я не пользовался, не подскажу.

Посмотрите на всякий случай темы на форуме по применению GIS ToolKit Active совместно с Qt. Там есть примеры кода, как пользователи обращаются к компонентам и используют типы данных.
 
Просьба продолжать беседу в той же теме на форуме, где вы ее начали.

Цитата
Давид Павловских написал:
Добрый день! Я написал на форуме, но мне так и не дали внятного ответа

Вы после моего ответа не дали пояснений, не задали вопросов.

Цитата
Денис Вицко написал:
Во-первых, в какой среде разработки Вы разрабатываете приложение?
Во-вторых, что из состава GIS ToolKit Active Вы собираетесь использовать?

По первому вопросу, судя по всему, VS.
По второму - нет ответа.


Цитата
Денис Вицко написал:
Для того, чтобы применять компоненты, библиотека axGisToolKit.ocx (оба варианта - x32 и x64) должна быть штатным образом зарегистрирована в системе.

Вы зарегистрировали OCX?

Для проверки корректности установки попробуйте собрать любой пример из состава инсталляции и запустить его.


Вы задаете следующие вопросы:
Цитата
Давид Павловских написал:
Спасибо,но у меня не было проблем с подключением к динамическим библиотекам, как gis64acces.dll, gis64vecex.dll и др. У меня проблема именно с доступом к axGisToolKit64.ocx. Я хотел создать объект на карте, как в примере на C#:

Код
        // Создание объекта
        //==============================================================================
        private void button2_Click(object sender, EventArgs e)
        {
              // Создать пустой объект "БАССЕЙНЫ"
              MapObj1.CreateObjectByExcode(0, (int)axGisToolKit.TxMetricType.IDFLOAT2, 31133000, (int)axGisToolKit.TxObjectLocal.OL_SQUARE);
              // Установить метрику созданного объекта
              MapPoint1.PlaceInp = axGisToolKit.TxPPLACE.PP_PLANE;
              MapPoint1.SetPoint(6219500, 7439000);
              MapObj1.Metric.Append(0,MapPoint1.C_CONTAINER);
              MapPoint1.SetPoint(6211500, 7439000);
              MapObj1.Metric.Append(0,MapPoint1.C_CONTAINER);
              MapPoint1.SetPoint(6211500, 7448000);
              MapObj1.Metric.Append(0,MapPoint1.C_CONTAINER);
              MapPoint1.SetPoint(6219500, 7448000);
              MapObj1.Metric.Append(0,MapPoint1.C_CONTAINER);
              MapObj1.Commit(); // запишем объект
        }


Но на с++ я не могу получить доступ к пространству имен axGisToolKit. Я пытался подключить через dumpcpp, который генерирует с него .h и .cpp файлы, но, как я показал на форуме, не получается. Может у вас есть уже сгенерированные .h и .cpp файлы?

"сгенерированных" header файлов для использования ActiveX в Qt нет.
Мы не используем Qt в Windows в качестве оболочки над ActiveX, поэтому не имеем такого опыта.
Я дал вам ссылку на темы форума, где пользователями описаны подобные манипуляции.
Вы их посмотрели?

Применение Qt в Windows для работы ActiveX-компонентами лично мне представляется нецелесообразным, поскольку только усложняет процесс, а кросс-платформенности не дает.
У Вас же, судя по всему, есть Visual Studio. Почему не использовать VC++ или C#?


Цитата
Давид Павловских написал:
У вас есть хотя бы готовые header файлы, чтобы я мог подключиться и использовать нужные функции и перечислимые типы?
Или может есть пример как рисовать обьекты на карте с помощью MAPAPI?

Как я писал выше,
Цитата
Денис Вицко написал:
Для использования структур и прочих типов данных для MAPAPI надо подключать библиотеки ГИС-ядра (статически или динамически) и использовать заголовочные файлы с объявлением прототипов функций.

Заголовочные файлы для MAPAPI входят в состав инсталляции и лежат вместе с библиотеками ГИС-ядра в поддиректории \GisDll\Include\

Онлайн Справочник по функциям интерфейса "MAPAPI" (в том числе то, о чем Вы спрашивали: Функции отображения и печати электронной карты)

"Букварь" по составу и использованию MAPAPI (есть небольшие примеры)

Полезные ссылки
 
Я тоже пробовал работать с ActiveX в QtCreator, пришлось все необходимые структуры объявлять самому, для чего создал приложение на C# и положил на форму нужные объекты.
Потом пишешь вызов функции, которая принимает/возвращает нужный тип, 2 раза Ctrl+мышь (функция->тип) - и открывается сгенерированный файл с описанием структуры. Ну и переносишь ее к себе с учетом особенностей C#.
Тут другая особенность, если я пытаюсь использовать чистый API, что в VC2019, что в QT5 - не линкуется gis32access.lib, говорит, что "invalid or corrupt file". Вопрос задавал, но ответов пока нет.
А сгенерированные файлы я использовал только в качестве подсказки, применяя к ActivX вызов dynamicCall, что в общем-то, сгенерированная обертка в итоге и делает.
Изменено: Валерий Парусов - 15.04.2022 06:03:44
 
Цитата
Валерий Парусов написал:
Я тоже пробовал работать с ActiveX в QtCreator, пришлось все необходимые структуры объявлять самому, для чего создал приложение на C# и положил на форму нужные объекты.Потом пишешь вызов функции, которая принимает/возвращает нужный тип, 2 раза Ctrl+мышь (функция->тип) - и открывается сгенерированный файл с описанием структуры. Ну и переносишь ее к себе с учетом особенностей C#.

Спасибо! Думаю, Ваша информация будет полезна другим пользователям, использующим Qt.

Цитата
Валерий Парусов написал:
Тут другая особенность, если я пытаюсь использовать чистый API, что в VC2019, что в QT5 - не линкуется gis32access.lib, говорит, что "invalid or corrupt file". Вопрос  задавал , но ответов пока нет.А сгенерированные файлы я использовал только в качестве подсказки, применяя к ActivX вызов dynamicCall, что в общем-то, сгенерированная обертка в итоге и делает.

По статическим библиотекам ответ в соответствующей теме.
При использовании MAPAPI и статических библиотек в VC никаких оберток не создается.
Но при этом эти API-вызовы будут работать напрямую с ГИС-ядром (а не с библиотекой ActiveX - *.ocx).
Пока я не увидел в Вашем вопросе слов про dynamicCall, я считал, что Вы именно об этом спрашиваете.
Применение Qt-метода dynamicCall должно осуществляться в отношении методов COM-объектов из библиотеки *.ocx и статические библиотеки для библиотек ГИС-ядра (gis32access.lib и др.) тут абсолютно не при чем.
Страницы: 1
Читают тему (гостей: 1)



© КБ Панорама, 1991-2024

Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности