С PANAPI на первый взгляд всё получилось. Потоки запускаются ничего не падает.
[B]Тогда вопрос в догонку:[/B] Нельзя ли сделать чтобы PANAPI задача загружалась при открытии новой карты автоматически? Т. е. если пользователь закрыл карту и открыл новую ему не было необходимости выполнять «Задачи→Запуск задач...»?
[B]P.S.[/B] Первый вариант я использовал из-за этих фраз в документации: [QUOTE]Существует два вида таких задач. Первый вид – это задачи, выполняемые в потоковом режиме без интерактивной работы оператора (пользователя) с изображением электронной карты. Например, конвертирование, трансформирование, сортировка, обновление и другие виды обработки данных. Второй вид – это интерактивные задачи. Например, редактирование, решение расчетных задач, построение отчетов, работа с базами данных и так далее. ... [/QUOTE] Вот я и решил что мне нужен первый вид. А про то что библиотека будет выгружена из функции по выходу из `CallMapFunctionEx` я не догадался.
Сделал простой плагин к ГИС Оператору в котором пытаюсь создать новый поток. В этом случае ГИС Оператор с загруженным плагином падает. Поток пробовал создавать разными способами: std::thread или QThread или даже создавать QTcpServer — результат идентичный. Вопрос: что я делаю не так? [CODE]#include "movingmapobject.h"
#include <iostream> #include <thread>
#include <mapapi.h>
extern "C" { long int WINAPI GetInterfaceVersion() { return MAPACCESSVERSION; } } // extern "C"
extern "C" { //Если назвать функцию CallGisFunctionEx как указано в документации, то Оператор ругается: Функции "CallMapFunctionEx, CallMapFunction, CreateMapTask" или "CreatePanTask"не найдены ! long int WINAPI CallMapFunctionEx(HMAP hmap, TASKPARMEX * parm) { std::cerr << "CallMapFunctionEx()" << std::endl;
MovingMapObject* mmo = new MovingMapObject; //MovingMapObject Пустой класс. Только пустые конструктор, деструктор и функция doWork() {}
std::thread* thr = new std::thread(&MovingMapObject::doWork, mmo); thr->detach();
return 0; } }[/CODE] Использую sdk_operatorse.zip и ГИС Оператор отсюда [URL=https://gisinfo.ru/download/download_linux.htm]https://gisinfo.ru/download/download_linux.htm[/URL] ОС Astra Linux SE 1.6. Qt 4.8.7
Плагин загружается при старте ГИС Оператор с помощью параметра командной строки -t.
Плагин нужен для того чтобы в дальнейшем отображать на карте динамические точки и другую информацию, полученную из другого приложения.