0

Windows 64 ビットで FFTW3 を使用したいと考えています。FFTW Web サイトの指示に従います。パッケージをダウンロードし、解凍し、lib.exe を実行して .lib の「インポート ライブラリ」を作成します。

その後、(FFTW3 dll 32 ビットを使用して問題なく動作する) アプリケーションをビルドすると、次のエラーが発生します。

1>pyramidTransform.obj : エラー LNK2019: 関数 "int __cdecl fourier2spatialband1(int,int,float *,float ,double ( )[2],double ( )[2],double ( )[2]で参照されている未解決の外部シンボル __imp_fftw_destroy_plan )" (?fourier2spatialband1@@YAHHHPEAM0PEAY01N11@Z) 1>pyramidTransform.obj : エラー LNK2019: 関数 "int __cdecl fourier2spatialband1(int,int,float *,float ,double ( )[2],double ( )[2],double ( )[2])" (?fourier2spatialband1@@YAHHHPEAM0PEAY01N11@Z) 1>pyramidTransform.obj : エラー LNK2019: 関数 "int __cdecl fourier2spatialband1(int,int,float *,フロート,ダブル ()[2],double ( )[2],double ( )[2])" (?fourier2spatialband1@@YAHHHPEAM0PEAY01N11@Z) 1>pyramidTransform.obj: エラー LNK2019: 未解決の外部シンボル __imp_fftw_free が関数 "int __cdecl decompose( int,int,float *,int,int,float * *,float * *,float *,float * * *,float * * *,float * *,float * *)" (?decompose@@YAHHHPEAMHHEAPEAM10PEAPEAPEAM211@Z) 1>pyramidTransform.obj : エラー LNK2019: 関数 "int __cdecl decompose(int,int,float *,int,int,float * *,float * *,float *,float * * *,float * で参照されている未解決の外部シンボル __imp_fftw_malloc * *,float * *,float * *)" (?decompose@@YAHHHPEAMHHPEAPEAM10PEAPEAPEAM211@Z)

[Additional Dependencies] のプロパティ ペインには、libfftw3-3.lib (上記で作成) にリンクしていることが明確に示されています。

Visual Studio がリンクしようとしているものを確認するにはどうすればよいですか? Windows 64 ビットで FFTW-3 を使って運が良かった人はいますか?

4

2 に答える 2

2

問題が見つかりました。FFTW3 では、作成者が既に Windows 用の DLL をコンパイルしているため、提供されている .def ファイルからインポート ライブラリ (.lib) ファイルを作成する必要があります。これを行うには、Visual Studio 2008 コマンド プロンプトに移動します。

lib /def:libfftw3-3.def

Microsoft (R) Library Manager バージョン 9.00.21022.08 Copyright (C) Microsoft Corporation. 全著作権所有。

リンク: 警告 LNK4068: /MACHINE が指定されていません。ライブラリlibfftw3f
-3.lib とオブジェクト libfftw3f-3.exp の作成

問題は、これらの .lib ファイルを最初に作成したときに、間違ったコマンド プロンプトを開始したに違いないということでした。

詳細な手順については、FFTW Windows のWeb サイトを参照してください。

上記の Web サイトの手順に従っている場合は、管理者権限を必要としないフォルダーからコマンドを実行する必要があることに注意することも重要です。これにより、.lib ファイルを取得できるようになります。次に、それらを VS lib フォルダーにコピーするだけで準備完了です。

于 2010-07-14T15:04:39.180 に答える
1

ライブラリの64 ビットバージョンに対してリンクしていますね。FFTW3 32 ビット DLL で正常に動作するとおっしゃっていたので、32 ビット ライブラリを使用しているようです。64 ビット ビルドは、32 ビット ライブラリ (または 32 ビット DLL) に対してリンクできません。

于 2010-07-14T01:07:08.450 に答える