2016-05-27 16 views
0

私は今まで成功していないeclipseにfftw3ライブラリをリンクしようとしています。私は「パスとシンボル」内のヘッダファイルfftw3.hを含み、fft_complexとfft_planを認識することができるが、これらは__imp_fftw_destroy_plan' undefined reference to __imp_fftw_executeeclipse marsにfftw3をリンクする方法C++?

__imp_fftw_malloc' undefined reference to __imp_fftw_plan_dft_r2c_1dへ 未定義の参照」に

未定義の参照参照されていないです助けてください。私はEclipseを初めて使っています

答えて

0

私はプロジェクトを作成するのにcmakeを使います。 私が使っているfftwの部分は(VCでもEclipseでも使えるはずです)。

PS:

set (FFTW_DIR "C://fftw-3.3.4-dll32") 
... 
find_path (FFTW_DIR fftw3.h) 
INCLUDE_DIRECTORIES(${FFTW_DIR}) 
link_directories("${FFTW_DIR}") 
... 

TARGET_LINK_LIBRARIES(libfftw3-3 libfftw3f-3 libfftw3l-3) 
+0

あなたはいくつかの詳細を提供してくださいできますか?私はcmakeを知らない。Windowsを使用しています –

+0

Cmakeは、さまざまなタイプのビルドシステム(ビジュアルスタジオ、メイク、コードブロック、xcodeなど)用の(plattform independent)ソリューションファイルを作成するためのソフトウェアです。 ソースファイル、ヘッダーファイル、qtファイルを見つける場所を記述するcmakelistファイルを作成します。cmakeで開き、ソリューションを作成します。 ちょっと混乱しますが、しばらくしてからC++コードを書いて、Visual StudioやLinuxのファイルを作成して編集せずに(うまくいけば)作ることができますので、見逃したくありません。 –

0

__imp_fftw_destroy_plan)はヘッダで定義されていないこれらの関数をデバッグの間、そして、はい、私は手動でパスを変更する必要はありませんプロジェクトを作成するために少し怠惰午前:パスをfftwライブラリに提供する必要があります。 eclispeのビルディングユーティリティを使い続けたい場合は、以下のステップを実行してください:

1)プロジェクト名を右クリックし、Propertiesをクリックしてください。

2)C/C++一般/パスとシンボルで、Includeフラップをクリックします。 C++用のパスをfftw3.hに追加しました。これは、g ++のインクルード検索パスである-Iフラグに対応します。

3)Library Pathsフラップをクリックし、パスをlibfftw3.aに追加します。これはg ++のライブラリ検索パス-Lに対応します。

4)Librariesフラップをクリックし、fftw3を追加してください。こうすれば、-lfftw3がビルド手順のリンクステップに追加され、g++libfftw3.aを探します。

プロジェクトが構築されているとして、次のコマンドは、コンソールウィンドウに表示されます。

make all 
Building file: ../src/fftwineclipse.cpp 
Invoking: GCC C++ Compiler 
g++ -I/home/.../fftw_bidon/include -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/fftwineclipse.d" -MT"src/fftwineclipse.d" -o "src/fftwineclipse.o" "../src/fftwineclipse.cpp" 
Finished building: ../src/fftwineclipse.cpp 

Building target: fftwineclipse 
Invoking: GCC C++ Linker 
g++ -L/home/.../fftw_bidon/lib -o "fftwineclipse" ./src/fftwineclipse.o -lfftw3 
Finished building target: fftwineclipse 

あなたはもちろん、ステップ2-4

に提供した設定を反映し、これらの行を見ることができますfftw3ライブラリがコンピュータに完全にインストールされている必要があります。パッケージマネージャ(unix)のパッケージlibfftw3-3libfftw3-dev(静的ライブラリlibfftw3.a)を参照してください。 WindowsでMinGWを使用している場合は、MinGW supports libraries named according to the "libfftw3.lib" and "libfftw3.dll" conventions, in addition to the normal "libfftw3.a" convention common on *nix systems.hereを参照して、プリコンパイルされたFFTW 3.3.4ウィンドウDLLを取得します。 Whatch out:それはlibfft3-3.dllです。

Use default buid commandC/C++ Builderプロジェクトのプロパティのフラップをオフにして、独自のビルド手順を呼び出すこともできます。そうすれば、独自のコマンドを提供できます。 generate Makefiles automaticallyをアンチッキにして、ビルドの場所を変更することで、独自のメイクファイルを作成することもできます。ここで

はFFTWが適切にリンクされている場合、プロジェクトとテストを作成するためのコードの最小部分です:

#include <iostream> 

#include <fftw3.h> 

using namespace std; 



int main() { 

    int N=42; 
    fftw_complex in[N], out[N]; 
    fftw_plan plan = fftw_plan_dft_1d(N,in,out,FFTW_FORWARD,FFTW_ESTIMATE); 
    fftw_execute(plan); 
    fftw_destroy_plan(plan); 
    cout << "end" << endl; 
    return 0; 
} 
+0

ライブラリのディレクトリにlibfftw3-3を追加します。 theres前のエラーショーが表示されますが、私はdoesntのコンソールにomeの理由で表示されるビルドエラーがあります。私のfftwフォルダにlibfftw3-3.dll、libfftw3l-3.dllがあります。ライブラリタブには、拡張子dllのないlibfftw3-3が含まれていました。 –

+0

私はlibfftw3-3を追加すると、mingw C++の –

+0

も使用しています。以下の「あいまいな相対パス」というコメントがあります。プログラムは実行されましたが、0以外の値で終了しました。エラーは表示されますが、エラーは表示されません。 –

関連する問題