2

そのため、以前に書いた古いコードを使用しています。私はもともとそれを Windows に移植するつもりでしたが、いくつかの成功を収めましたが、すぐに他の問題に遭遇し、*nix 環境に戻すことにしました。元のコードは、最初の試行で問題なくコンパイルおよび実行されました。

Ubuntu 11.10 を実行しており、IDE として Eclipse を選択しました。元のコードをコンパイルして実行すると、すべて問題ありません。FFTW ライブラリ ([fftw.org][1]) をインストールしましたが、このライブラリを使用するものをビルドできないようです。

ターミナルでaptitudeを使用してライブラリをインストールしました:

sudo apt-get install libfftw3-dev libfftw3-doc

ライブラリは間違いなく存在します:

~$ g++ -lfftw3
/usr/lib/gcc/x86_64-linux-gnu/4.6.1/../../../x86_64-linux-gnu/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
collect2: ld returned 1 exit status

そして、Eclipse のプロジェクトのプロパティ -> C++ リンカ -> ライブラリ リストに "fftw3" を追加しました。

ヘッダーファイルは問題なく見つかりました。

コンパイルに行くと、ライブラリで定義されているすべてのデータ型が定義されていないため、基本的にコンパイラは何をすべきかわかりません。

私は少し困惑しています...

エラーの 1 つを次に示します (すべて同一です)。 行:

fftw_real a[M][N];

エラー:

error: ‘fftw_real’ was not declared in this scope

他に何を試すべきかわかりません。あなたの助けと専門知識は大歓迎です。前もって感謝します。

解決しました!これが解決策です

OLD CODEを使用して睡眠不足で作業し、Google や StackOverflow で同様の問題の解決策を探している人は、自分で作成するのではなく、私のばかげた間違いから学んでください。

ここでのキー フレーズはold codeです。私のコードは FFTW 2 用に書かれていますが、根本的に異なるインターフェイスを持つライブラリのバージョン 3 を使用しています。ライブラリを使用するすべてのコードを更新する必要がありましたが、すべて正常に機能しました。

どっ!ばかだ。Google ランドの誰かがいつかこれが役立つことを願っています。

何が間違っていたのかを理解するのを手伝ってくれて、Dietmar Kühl に感謝します。時間を割いてライブラリをインストールし、いろいろ調べていただきありがとうございます。とても親切でした。

4

1 に答える 1

2

find fftw-3.3 | xargs grep fftw_real明らかにすることを使用して

fftw-3.3/ChangeLog: fftw_real がなくなりました

これが根本的な問題のようです (まあ、この質問を回答済みとしてクローズするための回答を提供するだけです)。

于 2012-01-08T05:46:01.030 に答える