2013-01-23 4 views
1

Я использую FWTools и SharpMap (с gdal_sharp) для создания приложения. И у меня странная ошибка. Загрузка растрового слоя работает великолепно в режиме отладки, но в версии он бросает исключение в SharpMap.Layers.GdalRasterLayer в конструкторе при вызовеОшибка FWTools/GDAL в версии выпуска

_projectionWkt = _gdalDataset.GetProjectionRef(); 

Полное исключение:

{System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt. 
    at OSGeo.GDAL.GdalPINVOKE.Dataset_GetProjectionRef(HandleRef jarg1) 
    at OSGeo.GDAL.Dataset.GetProjectionRef() 
    at SharpMap.Layers.GdalRasterLayer..ctor(String strLayerName, String imageFilename) in d:\Fakultet\IX Semestar\GIS\Projekat\GreenGIS\SharpMap.Extensions\Layers\GdalRasterLayer.cs:line 404 
    at GreenGIS.Form1.addRasterLayer() in d:\Fakultet\IX Semestar\GIS\Projekat\GreenGIS\GreenGIS\Form1.cs:line 50 
    at GreenGIS.Form1.toolStripButtonAddVector_Click(Object sender, EventArgs e) in d:\Fakultet\IX Semestar\GIS\Projekat\GreenGIS\GreenGIS\Form1.cs:line 129 
    at System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e) 
    at System.Windows.Forms.ToolStripButton.OnClick(EventArgs e) 
    at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e) 
    at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e) 
    at System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met) 
    at System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met) 
    at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea) 
    at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks) 
    at System.Windows.Forms.Control.WndProc(Message& m) 
    at System.Windows.Forms.ScrollableControl.WndProc(Message& m) 
    at System.Windows.Forms.ToolStrip.WndProc(Message& m) 
    at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) 
    at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) 
    at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) 
    at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg) 
    at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData) 
    at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context) 
    at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context) 
    at System.Windows.Forms.Application.Run(Form mainForm) 
    at GreenGIS.Program.Main() in d:\Fakultet\IX Semestar\GIS\Projekat\GreenGIS\GreenGIS\Program.cs:line 19} 

Странная вещь что в Debug все работает нормально. Настройка сборки является точной, как .Net 4.0, x86 Platform.

Любые идеи?

Thankyou заранее

+0

Выполняют ли время выполнения во всех проектах на C++ друг друга при конфигурации Release? – jglouie

+0

Да, они соответствуют. Также проверял. –

ответ

0

Это, как представляется, проблема с Windows 8, и это DEP реализация вместе с .Net 4.0. Я использую dll C++ в оболочке, и ОС не позволяет ее выполнять. Это можно решить, отредактировав DLL или отключив защиту выполнения данных.

1

Я столкнулся с аналогичными проблемами, но после использования текущих скомпилированных двоичных файлов от http://www.gisinternals.com/sdk/ проблема была исправлена. Я документировал шаги, которые работали для меня в http://vipassanaandenvironmentalinformatics.blogspot.co.nz/2013/03/getting-started-with-c-and-gdal.html.

Надеюсь, что этот ответ по-прежнему помогает другим.

 Смежные вопросы

  • Нет связанных вопросов^_^