Вопрос по FFTW



  • Я скачал библиотеку FFTW отсюда. Подключил её в pro файл таким образом:

    INCLUDEPATH += "H:\fftw-3.3.5-dll64"
    LIBS        += -L "H:\fftw-3.3.5-dll64" -lfftw3-3
    
    LIBS +=  H:\fftw-3.3.5-dll64\libfftw3-3.a\
           H:\fftw-3.3.5-dll64\libfftw3f-3.a\
            H:\fftw-3.3.5-dll64\libfftw3l-3.a
    

    В mainwindow.h сделал include. Далее всё по инструкции производителя.
    Однако, при попытке запустить программу - она закрывается сразу при запуске.
    Кто-нибудь сталкивался с таким?
    Компилятор MinGw64 и либа тоже 64.



  • Программа крашится, судя по всему из-за обработчика:

    for (int i = 0; i < len_effective; i++)
                                    {
                                        data_temp.cstd[1] = ba[i*2 + 5];
                                        data_temp.cstd[0] = ba[i*2 + 6];
                                        ADC_DATA_BUFFER[i] = (((data_temp.istd[0])));//average_filter median_filter lowpass_filter
                                        adc_call_command_counter++;
                                        fileStream << QString::number(ADC_DATA_BUFFER[i]);
                                    }
                                    fileStream << "\n";
    
                                    in = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * adc_call_command_counter);
                                    out = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * adc_call_command_counter);
                                    for (int i = 0; i < 0; i++)
                                    {
                                        in[i][0] = ADC_DATA_BUFFER[i];
                                    }
                                    fftw_p = fftw_plan_dft_1d(adc_call_command_counter, in, out, FFTW_FORWARD, FFTW_ESTIMATE);
                                    fftw_execute(fftw_p);
    
                                    clear_graph();
                                    paint_curve();
                                    fftw_destroy_plan(fftw_p);
                                    fftw_free(in);
                                    fftw_free(out);
    

    Причём конкретно - в этом месте:

    in = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * adc_call_command_counter);
                                    out = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * adc_call_command_counter);
    

    В принципе это всё очень странно, потому как этот кусок кода у меня в слоте и при включении не вызывается.


Log in to reply