Инициализатор типа для «OSGeo.OSR.OsrPINVOKE» вызвал исключение

Я пытаюсь создать CoordinateTransformation для преобразования SRS шейп-файла. Однако при попытке создать его с помощью следующего вызова метода:

var sourceSrs = new SpatialReference(Osr.SRS_WKT_WGS84);

Я получаю исключение:

Инициализатор типа для OSGeo.OSR.OsrPINVOKE вызвал исключение.

Подробное исключение выглядит так:

Исключение

Кто-нибудь может помочь?


person displayName    schedule 14.06.2016    source источник
comment
Я уже задавал этот вопрос в GIS SE.   -  person displayName    schedule 14.06.2016
comment
Этот неправильный формат изображения указывает, вероятно, на разницу в архитектуре — например, что-то, созданное для x86, пытается взаимодействовать с чем-то, созданным для x64. Большая часть этого, вероятно, скрыта за вызовами P/Invoke, которые являются внутренними для используемой вами библиотеки.   -  person Cᴏʀʏ    schedule 14.06.2016
comment
@Cᴏʀʏ: Вы абсолютно правы. Итак, я запускал этот код из модульного теста. Я установил «Архитектура процесса по умолчанию» в разделе «Настройки теста» на x64. Я все еще получаю это исключение. Любые другие настройки, которые мне нужно изменить (которые вы можете придумать)?   -  person displayName    schedule 14.06.2016


Ответы (1)


Принудительная сборка проекта для целевой платформы x64 помогает. Вы можете сделать это, перейдя в «Свойства проекта» (сочетание клавиш: Alt + Enter) > «Сборка» > «Целевая платформа».

Кроме того, если вы запускаете код из какого-либо модульного теста, сделайте то же самое для проекта модульного тестирования и измените "Архитектуру процесса по умолчанию" на x64. «Архитектуру процесса по умолчанию» можно изменить в разделе «Тест» (в пунктах меню VS) > «Настройки теста» > «Архитектура процессора по умолчанию» > x64.

person displayName    schedule 14.06.2016