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} 

이상한 것은 그 모든 디버그 잘 작동합니다. 빌드 설정은 정확히 .Net 4.0, x86 플랫폼입니다.

아이디어가 있으십니까? 사전에

감사합니다

+0

릴리스 구성에서 모든 C++ 프로젝트의 런타임이 서로 일치합니까? – jglouie

+0

예 그들은 일치합니다. 그것도 확인했다. –

답변

0

는 윈도우 8에 문제가 될 것으로 보인다 그리고 닷넷 4.0과 함께 DEP 구현입니다. 나는 래퍼에 C++ dll을 사용하고 있으며, OS는 그것을 실행시키지 않는다. DLL을 편집하거나 데이터 실행 방지를 해제하여 해결할 수 있습니다.