0

Visual Studio2010プロジェクトにリンクされたプリコンパイル済みのmingwfftwバイナリを使用して、メモリ破損の問題が発生したことがないかどうかを知りたいです。奇妙なことに、fftw APIが呼び出されなくても、fftw libsリンク(fftwdocで説明されているようにlib/def:libfftw3-3.defで生成された)だけでプロジェクトに問題が発生します。さて、著者が示唆しているように、vs 2010でfftwを最初からコンパイルしてみますが、libをリンクするだけで副作用が発生する可能性があるという事実に興味があります。私が知る限り、それは私たちのc++コードの問題ではないようです...

いくつかの環境。詳細:2010年と比較して32ビット、アンマネージドC++プロジェクトに勝つ

ありがとうございました!

4

2 に答える 2

1

fftwライブラリが何であるかわからないので、それが不安定さを引き起こすために具体的に何をしているのかわかりません。DLLがロードされたときにコードを実行する可能性があるため、DLLをアクティブに呼び出していないという事実は、必ずしも何もしていないことを意味するわけではありません。

ただし、MinGWmsvcrt.dllはWindowsシステムで配布されるランタイムにリンクしますが、VS2010でDLLランタイムを使用する通常のビルドはに対してリンクしMSVCRT100.DLLます。ランタイムDLLの混合は、特に、あるランタイムから割り当てが行われ、別のランタイムで解放された場合(または、デバッグランタイムが関係している場合は別のランタイムで使用された場合)、不思議な問題を引き起こす可能性のある領域です。

最善の策は、VS 2010でfftwライブラリを再コンパイルすることです(ソースが利用可能であると思います-MSVCで再構築するのはそれほど難しくないことを願っています)。

VS 2010にmsvcrt.dllランタイムを使用するように説得することは可能です(Microsoftがそれを行います)が、詳細は自明ではなく、私のメモは他の場所にあります。

于 2011-05-17T20:10:14.993 に答える
0

fftwはかなりのコード生成/プロファイリング/CPUターゲティングを行います。

どうやら彼らはそれが最初に実行されたときにこれを行います。だからあるかもしれない

  1. 最初のプロファイリングの実行を成功させるのを妨げるバグ(一度は管理者として実行してみてください?)
  2. 互換性のないインストールからの残りの構成。fftwは、見つかった構成が現在実行中のアーキテクチャと一致することを確認するために健全性チェックを行うと思いますが、そのプロセスで何かが間違っている場合は、その構成データを見つけて手動で削除することでメリットが得られます。

申し訳ありませんが、詳細(場所)を覚えていません

于 2011-05-17T20:09:18.677 に答える