3

Visual Studio 2010 で FFTW を使用して簡単なプロジェクトを作成しようとしています。ライブラリのリンクに問題があります。

Windowsページの指示に従って、64ビットの.libファイルを作成しました

ダウンロードした 64 ビット バージョンを解凍し、指定されたツールをそのディレクトリで実行しました。プロジェクトの兄弟として「fftw」というフォルダーに解凍しました。

Visual Studio で、すべての既定値を使用して C++ コンソール アプリを作成しました。デフォルトのビルド タイプは Debug Win32 です。この行をConfiguration Properties→Linkerに追加しました: C:\Users\XXXXX\Documents\Visual Studio 2010\Projects\fftw\libfftw3-3.lib

また、libfftw3-3.lib を [ Configuration Properties] → [Linker] → [Input ] に追加し、そこでフル パスを試しました。

StdLib コンプレックスと FFTW を含めます。

#include <complex>
#include "..\..\fftw\fftw3.h"

私のメイン関数にはサンプルコードがあります:

int _tmain(int argc, _TCHAR* argv[])
{
  const int N = 1024;
  fftw_complex in[N], out[N];
  fftw_plan p;
  p = fftw_create_plan(N, FFTW_FORWARD, FFTW_ESTIMATE);
  fftw_one(p, in, out);
  fftw_destroy_plan(p);  
  return 0;
}

ビルドしようとすると、次のようになります。

1>------ Build started: Project: FFTTest, Configuration: Debug Win32 ------
1>  FFTTest.cpp
1>c:\users\XXXXX\documents\visual studio 2010\projects\ffttest\ffttest\ffttest.cpp(34): error C3861: 'fftw_create_plan': identifier not found
1>c:\users\XXXXX\documents\visual studio 2010\projects\ffttest\ffttest\ffttest.cpp(36): error C3861: 'fftw_one': identifier not found
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

誰かが私の方法でエラーを表示できますか?

4

3 に答える 3

4

見つかりました:fftw_create_plan()fftw_one()は、FFTW3 から削除された関数です。

FFTW2 チュートリアルからコードを取得した可能性があります。代わりにFFTW3 チュートリアルを参照してください。

于 2012-09-18T13:52:46.613 に答える
0

FFTW v3 ライブラリで FFTW v2 API を使用しようとしていました。実際の例は、v3 チュートリアル ページにあります。

ライブラリを参照するための上記の手順は問題ありません。また、FFTW DLL を実行可能ファイルのあるディレクトリに配置することもできます。

于 2012-09-18T14:38:29.417 に答える
0

パスにバックスラッシュを使用しないでください:

#include "../../fftw/fftw3.h"

C/C++ のバックスラッシュはエスケープ文字として解釈されます。バックスラッシュを生成するには、バックスラッシュを 2 倍にする必要がありますが、通常は常に/パス セパレータを作成するために使用します。

于 2012-09-17T23:36:53.660 に答える