Не работает ISymbologyControl LoadDesktopStyleFile

0 голосов
спросил 07 Ноя, 12 от AlexandrGeoinfo (160 баллов) в категории Программные продукты Esri
    Здравствуйте. Разрабатываю приложение под ArcGIS 10.0 с использованием C++, Qt и VS 2008. При вызове метода LoadDesktopStyleFile у объекта класса ISymbologyControl, метод возвращает код ошибки "1075 800a0433 : ArcGIS Desktop is not installed
on this machine so Style files cannot be read". Все было бы понятно, но ArcGIS Desktop установлен, также установлен ArcGIS Engine Runtime и Developer Kit. Для инициализации лицензии использую esriLicenseProductCodeArcEditor license product code:
IAoInitializePtr ipInit(CLSID_AoInitialize);

::AoInitialize(NULL);
esriLicenseStatus lic;
pIAoInit->Initialize(esriLicenseProductCodeArcEditor,&lic);

Приложение запускается и работает нормально, но все зависящие от Desktop классы не работают. Когда я использовал для разработки ArcGIS 9.3.1, все классы Desktop работали(например IComPropertySheet, ISymbologyControl и т.д.).
Для подключения необходимых библиотек Desktop использую следующий код:
#import "c:\\Program Files (x86)\\ArcGIS\\Desktop10.0\\com\\esriDisplayUI.olb" raw_interfaces_only 

raw_native_types no_namespace, named_guids
и т.д. для всех необходимых библиотек. Также использую в Additional Include Directories:
C:\Program Files (x86)\ArcGIS\Desktop10.0\com

C:\Program Files (x86)\ArcGIS\DeveloperKit10.0\include\CPPAPI
и для подключения SDK:
#include <ArcSDK.h>
, но вызов метода все равно возвращает код ошибки. Что я делаю неправильно?

3 Ответы

0 голосов
ответил 07 Ноя, 12 от Grigoriy (127,020 баллов)
0 голосов
ответил 09 Ноя, 12 от AlexandrGeoinfo (160 баллов)
    Я использую unmanaged C++. Почитал про Extending ArcObjects, попытался использовать формат импорта для библиотек
#import "libid:5E1F7BC3-67C5-4AEE-8EC6-C4B73AAC42ED"
вместо указания пути к .olb файлам
все равно возвращает ошибку 1075 800a0433 : ArcGIS Desktop is not installed. Пробовал искать по форуму и по ArcGIS Resource Center ISymbologyControlPtr LoadDesktopStyleFile ничего не нашел. Везде в ISymbologyControlPtr используется LoadStyleFile. Такое чувство, что для работы с Desktop я что-то забыл добавить в проект и классы "не видят" установленный Desktop
0 голосов
ответил 09 Ноя, 12 от Grigoriy (127,020 баллов)
ArcObjects большой.
Есть два принципиально разных подхода к расширению его возможностей.
1. Расширение функциональности самого ArcGIS Desktop.
2. Написание своей программы, использующей контролы.

Первый предполагает наличие самого ArcGIS Desktop, и будет работать только под Windows. И при программировании нужно уметь подключаться к библиотекам и объектам самого приложения (ArcMap, ArcCatalog).

Изучите и выполните для начала несколько любых примеров, в которых расширяется функциональность. Тогда станет понятно, куда копать дальше. И подходит ли Вам ваша среда разработки.

Application framework customizations
Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...