1

プロジェクションの計算に projAPI ( http://trac.osgeo.org/proj/wiki/ProjAPI ) を使用しようとしています。悲しいことに、ドキュメンテーションは...まあ...あまり良くありません。また、私は C++ プログラミングが得意ではありません。VisualStudio でのプロジェクトのセットアップは、ロケット サイエンスです。とりあえず設定は以下の通り。

  • VC++ ディレクトリ => インクルード ディレクトリ => lib のインクルード ディレクトリを追加
  • VC++ ディレクトリ => ライブラリ ディレクトリ => .lib ファイルを含む lib ディレクトリを追加
  • リンカー => 入力 => Addit. 依存関係 => 「proj.lib」と「proj_i.lib」を追加

プロジェクトには、テスト目的で 1 つの 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.

無視すると、2 番目のエラーが表示されます。

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.

...主な問題は次のとおりです。エラーはどこにありますか? ライブラリのコンパイルに失敗しましたか? または、プロジェクトのセットアップに失敗しましたか?


ライブラリのコンパイル:

=> Visual Studio ツリーからVCVARS32.BATを実行し、次に

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

C:\PROJディレクトリを確認しました。すべてがそこにあり、lib および include ディレクトリをプロジェクトにコピーして試しました。

4

2 に答える 2

1

だから、私はそれを働かせました。明らかに、問題はデバッグ モードでのみ発生します。リリースモードに切り替えましたが、動作します。

私の推測では、lib が何らかの方法でデバッグ フックを強制終了する関数をトリガーするということです...

于 2013-10-08T08:15:34.353 に答える
0

真のヒープポインターが必要なようです。文字列に十分なスペースを持つポインターを割り当ててみてください (余分なヌルバイトを覚えておいてください!)、それに strcpy を渡し、それを渡します。

于 2013-10-07T14:17:31.383 に答える