在 VC++ 中链接 FFTW 时出错

Error Linking FFTW in VC++

本文关键字:出错 FFTW 链接 VC++      更新时间:2023-10-16

我正在使用VC++中的FFTW库并尝试运行此代码。当我运行它时,我收到以下错误

链接:致命错误LNK1104:无法打开文件"libfftw3l-3.dll"

我按照 FFTW 网站上的指示制作了 dll 和 lib 文件,并使用链接器>输入>附加部门将 dll 文件添加到我的项目中。

#include <fftw3.h>
#include <math.h>
int main(void)
{
    fftw_complex *in, *out;
    fftw_plan p;
    int nx = 5;
    int ny = 5;
    int i;
    float M_PI = 3.14;
    /* Allocate the input and output arrays, and create the plan */
    in = (fftw_complex*)fftw_malloc(sizeof(fftw_complex) * nx * ny);
    out = (fftw_complex*)fftw_malloc(sizeof(fftw_complex) * nx * ny);
    p = fftw_plan_dft_2d(nx, ny, in, out, FFTW_FORWARD,
FFTW_ESTIMATE);
    /* Now fill the input array with the input data */
    /* We'll simply make a sine wave */
    for (i = 0; i < (nx * ny); i++) {
        in[i][0] = sin(i / 10.0 * M_PI);    /* Real part */
        in[i][1] = 0.0;                          /* Imaginary part */
    }
    /* Actually execute the plan on the input data */
    fftw_execute(p);
    /* Print out the results */
    for (i = 0; i < (nx * ny); i++)
        printf("Coefficient %d: %f%+f*in", i, out[i][0], out[i][1]);
    /* Clean up after ourselves */
    fftw_destroy_plan(p);
    fftw_free(in); fftw_free(out);
    return 0;
} 

libfftw3l-3.dll适用于 FFTW 的long double版本。您的计算机上似乎没有此文件。但是,由于不使用任何long double函数或任何单个精度float函数,因此只需链接到libfftw3-3.dll库。