2013-10-05 314 views
1

我正在嘗試使用projAPI(http://trac.osgeo.org/proj/wiki/ProjAPI)來計算投影。可悲的是,文件是......好......不是那麼好。另外,我在C++編程方面並不擅長。 VisualStudio中的項目設置是一些火箭科學。反正,設置如下:projAPI(GIS庫)堆溢出

  • VC++目錄=>包含目錄=>添加的包括的lib
  • VC的DIR ++目錄=>庫目錄=>添加的lib目錄,包含的.lib 文件
  • Linker => Input => Addit。依賴=>添加 「proj.lib」 和 「proj_i.lib」

項目包含用於測試目的一個CPP:

#include "../include/proj_api.h" 

int main(int argc, char** argv){ 
    projPJ projection; 
    projection = pj_init_plus("+proj=merc +ellps=clrk66 +lat_ts=33"); 
} 

...編譯就像一個魅力...


當即將pj_init_plus,它崩潰:

Debug Assertion Failed! 

Program: ...cuments\visual studio 2012\Projects\testLib\Debug\testLib.exe 
File: f:\dd\vctools\crt_bld\self_x86\crt\src\dbgheap.c 
Line: 1322 

Expression: _CrtIsValidHeapPointer(pUserData) 

For information on how your program can cause an assertion 
failure, see the Visual C++ documentation on asserts. 

無視帶來了第二個錯誤:

Debug Assertion Failed! 

Program: ...cuments\visual studio 2012\Projects\testLib\Debug\testLib.exe 
File: f:\dd\vctools\crt_bld\self_x86\crt\src\dbgheap.c 
Line: 1328 

Expression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse) 

For information on how your program can cause an assertion 
failure, see the Visual C++ documentation on asserts. 

...主要問題是:哪裏是錯誤?我編譯圖書館失敗了嗎? 我做錯了我的項目設置?


編譯庫:

=>運行VCVARS32.BAT從Visual Studio中的樹,然後

$cd to the downloaded directory 
$nmake /f makefile.vc 
$nmake /f makefile.vc install-all 

檢查C:\ PROJ目錄:一切在那裏,將lib和include目錄複製到我的項目中並嘗試使用它。

回答

1

所以,我得到它的工作。顯然這個問題只發生在調試模式下。我切換到發佈模式,它的工作原理。

我的猜測是的lib觸發不知何故殺調試鉤子函數...

0

看起來像它期望一個真正的堆指針,嘗試爲您的字符串分配一個足夠空間的指針(記住額外的空字節!),strcpy,通過它。

+0

應該已經回答了我自己,但問題在釋放模式明顯消失... –