c++ 如何在qt throw pro文件中链接文件

yftpprvb  于 2023-03-20  发布在  其他
关注(0)|答案(1)|浏览(88)

我得到了未定义的对“ffwf_malloc”和其他函数fftw 3 lib的引用
起初我把fftw 3库安装到usr/local/lib上,后来我把它包含<fftw3.h>到我的项目中,但是我遇到了一个错误:Can't find <fftw3.h> file。在pro文件中,我添加了LIBS += -lfftw 3。现在,在我尝试编译项目之前,我没有任何错误。
我的主文件如下所示:

#include <QCoreApplication>
#include <bitset>
#include <fftw3.h>
#include "fftlib/fft_internal.h"
#include <stdlib.h>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    cfloat *input = static_cast<cfloat*>(fftwf_malloc(64 * sizeof(cfloat)));
    cfloat *output = static_cast<cfloat*>(fftwf_malloc(64 * sizeof(cfloat)));

    fftwf_plan plan;

    plan = fftwf_plan_dft_1d(64, reinterpret_cast<fftwf_complex *>(input),    reinterpret_cast<fftwf_complex *>(output), FFTW_FORWARD, FFTW_MEASURE);

    srand(0);
    for (unsigned i = 0; i < 64; i++)
    {
        float real = (float)rand() / RAND_MAX - 0.5f;
        float imag = (float)rand() / RAND_MAX - 0.5f;
        input[i] = cfloat_create(real, imag);
    }
    fftwf_execute(plan);

    fftwf_free(input);
    fftwf_free(output);
    fftwf_destroy_plan(plan);
    return a.exec();
}

.pro文件:QT -=图形用户界面

CONFIG += c++17 console
CONFIG -= app_bundle

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

# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before     Qt 6.0.0

SOURCES += \
        fftlib/cpu.c \
        fftlib/fft.c \
        fftlib/kernel.c \
        main.cpp

# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

HEADERS += \
    fftlib/fft.h \
    fftlib/fft_internal.h

我尝试将路径usr/local/lib/更改为usr/local/lib/cmake/fftw 3,但仍然不起作用。

cigdeys3

cigdeys31#

实际上我想用fftw3f库,但是我试着用了fftw3,我不知道有fftw3f库,我不知道为什么,但是fftw3f库的函数在fftw3中有定义,这就是为什么framework没有标记为错误,库的路径没有问题,我安装了fftw3f,它工作正常。

相关问题