Почему происходит ошибка "Undefined reference to fftwf_malloc" после установки библиотеки fftw3?

Рейтинг: 1Ответов: 1Опубликовано: 11.03.2023

Установил библиотеку fftw3. При попытке использовать ее возникает ошибка линкера.

/home/vadim/projects/test/test3/testFFt/main.cpp:7: error: undefined reference to 'fftwf_malloc'

в .pro-файле указал ее, LIBS += -lfftw3. Но этого недостаточно, пытался указывать путь через -L/usr/local/lib/ (по умолчанию библиотека устанавливается туда).

Код программы:

#include <iostream>
#include <fftw3.h>

int main()
{
    float *input = static_cast<float*>(fftwf_malloc(64 * sizeof(float)));
    fftwf_free(input);
    return 0; 
}

.pro-файл выглядит так:

TEMPLATE = app
CONFIG += console c++17
CONFIG -= app_bundle
CONFIG -= qt

LIBS += -L/usr/local/lib/ -lfftw3

SOURCES += \
        main.cpp

Ответы

▲ 2Принят

Вы вызываете функцию fftwf_malloc - суффкс f в fftwf намекает, что это функция из библиотеки FFT одинарной точности, то есть libfftw3f.so

Поэтому вам нужно установить пакет libfftw3-single3 (так называется в Debian/Ubuntu) и линковать с библиотекой -lfftw3f