私のC++プロジェクトでfftを行い、後で画像として表示したいです。 fftを行うために、私はfftw ++を使用しています。画像を表示するために、私はCImg-libraryを使いたいと思っていました。私はデモプロジェクトhereから始めました。コンパイルすると、すべてが機能します。できるだけ早く私はCIMG-ヘッダを追加すると、それはエラーで失敗しCImgとfftw ++の組み合わせが失敗します
test.cpp: In function ‘int main()’:
test.cpp:18:12: error: ‘f’ was not declared in this scope
Complex *f=ComplexAlign(n);
私のファイルは
#include "fftw++.h"
#include "CImg.h"
// Compile with:
// g++ -I .. -fopenmp example0.cc ../fftw++.cc -lfftw3 -lfftw3_omp
//using namespace std;
//using namespace utils;
//using namespace fftwpp;
//using namespace cimg_library;
int main()
{
fftwpp::fftw::maxthreads=get_max_threads();
std::cout << "1D complex to complex in-place FFT, not using the Array class"
<< std::endl;
unsigned int n=4;
Complex *f=utils::ComplexAlign(n);
fftwpp::fft1d Forward(n,-1);
fftwpp::fft1d Backward(n,1);
for(unsigned int i=0; i < n; i++) f[i]=i;
std::cout << "\ninput:" << std::endl;
for(unsigned int i=0; i < n; i++) std::cout << f[i] << std::endl;
Forward.fft(f);
std::cout << "\noutput:" << std::endl;
for(unsigned int i=0; i < n; i++) std::cout << f[i] << std::endl;
Backward.fftNormalized(f);
std::cout << "\ntransformed back:" << std::endl;
for(unsigned int i=0; i < n; i++) std::cout << f[i] << std::endl;
utils::deleteAlign(f);
}
のように見え、
g++ -I .. -fopenmp test.cpp ../fftw++.cc -lfftw3 -lfftw3_omp
マイグラム++バージョンでコンパイルされている4.8です。 5。 Complex.h
-headerを追加しても役に立ちません。両方のライブラリを組み合わせるためには何ができますか?
編集:さらなる研究はまた、エラーがfftw++
-package結果からライブラリComplex.h
を組み合わせて、コンパイルの問題の多くのCライブラリcomplex.h
とCImg.h
結果を用いて、C++からのみcomplex
-includeを使用できることを示していますCImg.h
-includeファイルと一緒に使用します。理由:今まで知らない。
second.cpp:
#include "CImg.h"
//Code for images
void example(void){
}
とインクルードファイルそのため:
秒を
は '名前空間を使用して、すべてのこと重い利きの使用を取り除く...'開始のための... –
@PaulR:固定、私は可能な限りオリジナルに近い滞在するために、前にそれを残しました。それでも同じ問題 –
私の推測では、 'Complex'は複数の場所で定義されていますが、CImgやfftw ++では* au fait *ではありません。 –