Я хочу сделать fft в своем проекте С++ и потом показать его как изображение. Чтобы сделать fft, я использую fftw++, а для отображения изображения я хотел использовать CImg-библиотеку. Поэтому я начал с демонстрационного проекта здесь. При компиляции все работает. Как только я добавляю CImg-заголовок, происходит сбой с ошибкой
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
Моя версия g++ 4.8.5. Добавление заголовка Complex.h
тоже не помогает. Что я могу сделать, чтобы объединить обе библиотеки?
Редактировать: Дальнейшие исследования показывают, что использование C-библиотеки complex.h
и CImg.h
приводит к множеству проблем компиляции, объединение библиотеки Complex.h
из пакета fftw++
также приводит к ошибкам, только complex
-include из C++ можно использовать вместе с CImg.h
-включить файл. Причина: Неизвестна до сих пор.
using namespace ...
... - person Paul R   schedule 07.04.2016Complex
определено более чем в одном месте, но я не au fait с CImg или fftw++. - person Paul R   schedule 07.04.2016CImg
не нравится сложное определение отfftw
, но я понятия не имею, как это исправить. - person arc_lupus   schedule 07.04.2016