А приложение запускается из под дебаггера в Visual Studio? Возможно, среда разки переопределяет переменные окружения. Если при запуске приложения самостоятельно (не из среды разработки) картина не изменится, разместите библиотеки по варианту 1:
Цитата
Вариант 1. Скопировать содержимое (вместе с поддиректориями) - \GISToolActive13\GisDll\X32 в c:\Windows\SysWOW64; - \GISToolActive13\GisDll\X64 в c:\Windows\System32.
Какая ОС у Вас? В какую директорию установлен GIS ToolKit Active? Покажите содержимое переменной PATH. Проверьте, нет ли случайно на компьютере библиотеки gis64acces.dll в директориях, согласно штатному алгоритму поиска DLL в операционной системе:
Цитата
1. Каталог, из которого загружено приложение. 2. Системный каталог. 3. 16-разрядный системный каталог. 4. Каталог Windows. 5. Текущий каталог. 6. Каталоги, перечисленные в переменной среды PATH (раньше, чем GISToolActive13\GisDll\X64).
1. Windows 10 x64 2. C:\Program Files\Panorama\GISToolActive13 3. Переменная PATH 4. gis64acces.dll есть только в одном месте C:\Program Files\Panorama\GISToolActive13\GisDll\X64. Прогонял поиском по всем дискам на компьютере
Запускаю приложение как из под среды разработки так и .exe из каталога bin/Debug примера. Ошибка выглядит вот так Ошибка Буду пробовать разместить библиотеку по варианту 1. Хотел уточнить, там нет опечатки в каталогах - X32 в - > \SysWOW64 , X64 -> \System32 ?
Александр Смагин написал: Хотел уточнить, там нет опечатки в каталогах - X32 в - > \SysWOW64 , X64 -> \System32 ?
Нет. Всё верно. SysWOW64 – это системная папка, в которой содержатся различные библиотеки файлов, организующих запуск 32-разрядных приложений на 64 разрядной Windows. В нее как раз надо x32 библиотеки положить.
PS В Windows 10 есть разные чудеса с файлами в защищаемых папках (в т.ч. C:\Program Files). Предположу, что причина может быть в правах доступа.
Подскажите, если мне нужно программно открыть пользовательскую карту поверх карты местности я могу использовать MAPAPI функцию mapOpenSiteForMap. Ее описание я нашел в sitapi.h. Чтобы ее использовать в C# нужно ее импортировать с помощью DLLImport. Я не понимаю какую DLL мне указывать? И как понять какая функция MAPAPI в какой dll?
Если в заголовочном файле в начале отсутствует информация о загрузке библиотеки, то это значит, что функция находится в gis32acces.dll или gis64acces.dll. Для остальных в заголовочном файле указано, например, #include "maplib.h" * HINSTANCE libInst = ::LoadLibrary(RSWGISTLIB);
RSWGISTLIB определена в maplib.h как gis64rswg.dll или gis32rswg.dll.