昨日質問がありましたhere extern配列で指定された大きなルックアップテーブルを使用する際の潜在的な問題を理解しようとしました。これらのテーブルはすべて、ノンパラメトリックモデルのセットに使用されます。ノンパラメトリックモデルは、顧客が使用するDLLに組み込む必要があります.DLLは、例えば1000Hz程度で計算を行うことが想定されています。Visual Studio 2010のC++でextern配列に許容される最大配列サイズ
今私のプロジェクトでは、合計66.2Mのフロートの合計ストアのexternアレイルックアップテーブルの組み合わせがあるため、合計で約265MBのデータがあります。これらのすべての表を含むプロジェクトは、コンパイルは正常に完了しますが、リンクを完了できません。しかし、extern配列に格納されているデータが約180MB未満の場合、プロジェクトはコンパイルされてリンクされます。
昨日の私のポストから、私のプロジェクトがエクスターナルアレイに保存できるデータ量の限界にぶつかっているという多くの証拠が集まってきました。 extern配列/変数のセットに格納できるデータの量には実際の制限がありますか? extern配列にあまりにも多くのデータを持つことによって壊れる可能性のあるリンカーにバグがありますか?何らかの制限がある場合、上限を何かよりも高くする方法や、この問題を何らかの形で回避する方法がありますか?
私のプロジェクトはWin32プロジェクトです。
編集
注問題についての詳細情報が表示され、エラーのように、ポストの開始時に私のリンクになっていること。以下は、VS 2010でのポップアップやメッセージのいくつかのスクリーンショットです:この大規模な配列のために
あなたが受け取ったエラーを投稿してください。 –
@KirillKobelevエラーに関する情報は、最初の文の太字の「here」に埋め込まれたリンクにあります。私はすでに額面でエラーを調査し、それを修正する方法についての多くの解説を見つけて、言及したことを試して、それを修正しなかったことに注意してください。私の実験では、extern配列に格納されているデータの特定のしきい値を超えるとリンカーが失敗することが示されています。 – spektr
私はあなたが何をしているのか、なぜexternがすべての数字を宣言しているのか分からない。私は 'float numbers [10000]'がDLL内の数値を宣言していて、メインプログラムの 'extern float * numbers'を宣言していると考えました。 – pm100