Я использую Tamas Szekeres сборки GDAL , включая привязки C #в настольном ГИС-приложении с использованием C #и.net 4.0
. Я включаю весь дистрибутив GDAL в подкаталог -моего исполняемого файла со следующей структурой папок:
\Plugins\GDAL
\Plugins\GDAL\gdal
\Plugins\GDAL\gdal-data
\Plugins\GDAL\proj
Мы используем EPSG :4326, и программное обеспечение построено с использованием 32-битной -битной цели, поскольку GDAL C #API использует p/invoke для 32-битных -битных библиотек (. ] можно попробовать 64-битную, так как Tamas предоставляет их, но пока не дошли руки до этого ).
Когда я запускаю свое приложение, я получаю следующую ошибку
Эта ошибка обычно возникает, когда программное обеспечение пытается получить доступ к устройству , которое больше не подключено, например к съемному диску. Невозможно «поймать» это исключение, потому что оно вызывает системный диалог.
После закрытия диалогового окна с помощью любой из кнопок программное обеспечение продолжает работать в соответствии с проектом.
Ошибка возникает при первом вызове следующего метода
OSGeo.OSR.CoordinateTransformation.TransformPoint(double[] inout);
Странные вещи:
- Ошибка возникает на одном и пока только на одном компьютере ()
- Я запускал это программное обеспечение на нескольких других компьютерах, как 32-битных, так и 64-битных, без проблем
- Ошибка не возникает при первом запуске после компиляции библиотеки прокладок GDAL, которую я использую, она возникает только при каждом последующем запуске
- это происходит независимо от выпуска или отладочной сборки
- это происходит независимо от того, подключен отладчик или нет
- это происходит независимо от того, включаю я или отключаю Gdal.UseExceptions или Osr.UseExceptions ();
- отключение съемных дисков приводит к исчезновению ошибки.Это не то, что я считаю реальным решением, так как я не смогу попросить клиента сделать это.
Я пробовал следующее:
- поймать ошибку
- изменение каталогов GDAL и настроек среды
- смена компьютеров и операционных систем :это сработало
- безуспешно использовал SysInternals ProcMon для отслеживания открываемых файлов, все они кажутся существующими файлами
- Я повторно -собрал рассматриваемый компьютер после отказа жесткого диска, но безрезультатно.
- "чистка" реестра с помощью CCleaner
- файлы в каталоге GDAL не изменяются при выполнении
Предположения
- Ошибка происходит в неуправляемом коде
- Во время инициализации GDAL некоторый путь ссылается на диск на компьютере, который больше не подключен .
- Я также работаю над предположением, что это связано с ошибкой конфигурации компьютера
. Конфигурация
- Windows 7 Профессиональная
- Intel Core i7 920 @ 2,67 ГГц
- 12,0 ГБ ОЗУ
- 64 -бит ОС
- Диск C :120 ГБ SSD с ОС, разработка (Visual Studio 10 )и т. д.
- Диск D :1 ТБ WD 10 000k с данными, доступ к данным отсутствует.
Вопрос
Мне нужно либо направление, чтобы поймать ошибку, либо инструмент или метод, который позволит мне выяснить, что ее вызывает. Я не хочу выпускать программное обеспечение с возможностью того, что некоторые системы будут иметь такое поведение.
задан Blue Toque 17 July 2012 в 04:35
поделиться