スタックダンプの調査:
InitTermは、他の関数のリストをウォークし、それぞれをステップで実行する単純な関数です。これは、特に、グローバルコンストラクター(起動時)、グローバルデストラクタ(シャットダウン時)、およびatexitリスト(シャットダウン時)に使用されます。
スタックダンプ内のそれは、CGALがそのタイプCGAL::Random::Random
と呼ばれるグローバル変数を定義しているという事実によるため、CGALとリンクしています。これが、メインの前にエラーが発生している理由です。default_random
CGAL::Random::Random
default_random
CGALソースから、標準Cを呼び出し、srand(time(NULL))
続いてローカルget_int
を呼び出します。ローカルは、標準Crand()
を呼び出して乱数を取得します。
ただし、スタックダンプはまだ内にあるため、第2段階には到達していませんsrand()
。
スレッドを遅延してファイバーに変換しているようです。つまり、スレッドで何かをしようとしたのはこれが初めてであり、続行する前にファイバーローカルストレージをセットアップする必要があります。
それで、試して調査することがいくつかあります。
1 / XPより前でこのコードを実行していますか?__set_flsgetvalue
XPではファイバーローカルストレージ( )が導入されたと思います。これはロングショットですが、とにかくそれをクリアする必要があります。
2 / CGALとリンクする必要がありますか?アプリケーションにはCGALライブラリに何かが必要だと思いますが、そうでない場合はリンクしないでください。別のプロジェクトファイルからの二日酔いである可能性があります。
3 / CGALを使用する場合は、最新バージョンを使用していることを確認してください。3.3以降、動的リンクをサポートしているため、異なるライブラリバージョン(静的/動的およびデバッグ/非デバッグの両方)が混在する可能性を防ぐことができます。
4 /VC8でコンパイルしてみてください。CGALがサポートするプラットフォームには、VC9(VS2008)はまだ含まれていません。CGALチーム自体がこれをフォローアップして、そのサポートに取り組んでいるかどうかを確認する必要がある場合があります。
5 /そして最後に、Boostをインストールしましたか?それは別のロングショットですが、とにかく一見の価値があります。
これらの提案のいずれも役に立たない場合は、私よりも知識のある人が来るのを待つ必要があります。恐れ入ります。
幸運を祈ります。