Ich möchte ein FFT in meinem C++ - Projekt, und zeigen Sie es anschließend als ein Bild. Um das fft zu machen, benutze ich fftw ++, und um das Bild anzuzeigen, wollte ich die CImg-Bibliothek benutzen. Also habe ich mit dem Demo-Projekt von here angefangen. Bei der Zusammenstellung funktioniert alles. Sobald ich die CImg-Header hinzufügen, schlägt es mit dem FehlerKombination von CImg und FFTW ++ schlägt fehl
test.cpp: In function ‘int main()’:
test.cpp:18:12: error: ‘f’ was not declared in this scope
Complex *f=ComplexAlign(n);
Meine Datei
#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);
}
wie
aussieht und mitg++ -I .. -fopenmp test.cpp ../fftw++.cc -lfftw3 -lfftw3_omp
Mein g ++ Version 4.8 zusammengestellt. 5. Hinzufügen der Complex.h
-Header hilft auch nicht. Was kann ich tun, um beide Bibliotheken zu kombinieren?
Edit: Weitere Untersuchungen zeigen, dass die C-Bibliothek complex.h
und CImg.h
Ergebnisse in vielen Kompilierung Probleme bei der Verwendung der Bibliothek Complex.h
aus den fftw++
-package Ergebnisse auch in Fehler, nur die complex
-include von C++ Kombination verwendet werden kann, zusammen mit der CImg.h
-include-Datei. Grund: Bisher unbekannt.
Befreien Sie sich von all dem übermäßigen Gebrauch von 'using namespace ...' für einen Anfang ... –
@PaulR: Behoben, ich habe es vorher gelassen, um so nah wie möglich am Original zu bleiben. Immer noch das gleiche Problem –
Meine Vermutung wäre, dass "Complex" an mehr als einem Ort definiert ist, aber ich bin nicht * au fait * mit CImg oder fftw ++. –