LNK1104 无法打开文件“libfftw3-3.lib”

问题描述 投票:0回答:1

我对 C 代码编码非常陌生,尝试在我的 Visual Studio 2019 中使用来自知名网站 http://www.fftw.org/ 的 FFTW。 我按照教程(https://www.youtube.com/watch?v=geYbCA137PU)进行操作,但出现错误:LNK1104无法打开文件'libfftw3-3.lib' 我该如何解决这个问题?我已经用谷歌搜索过它,但看起来大多数解决方案不太适合我。快到最后一步了!请!

#include <iostream>
#include <fftw3.h>
using namespace std;

//macros for real and imaginary parts
#define REAL 0
#define IMAG 1
//length of complex array
#define N 8

/*Computes the 1-D fast Fourier transform*/
void fft(fftw_complex* in, fftw_complex* out)
{
    // creat a DFT plan
    fftw_plan plan = fftw_plan_dft_1d(N, in, out, FFTW_FORWARD, FFTW_ESTIMATE);
    // execute the plan
    fftw_execute(plan);
    // do some cleaning
    fftw_destroy_plan(plan);
    fftw_cleanup();
}

/*Computes the 1-D inverse fast Fourier transform*/
void ifft(fftw_complex* in, fftw_complex* out)
{
    // creat a IDFT plan
    fftw_plan plan = fftw_plan_dft_1d(N, in, out, FFTW_BACKWARD, FFTW_ESTIMATE);
    // execute the plan
    fftw_execute(plan);
    // do some cleaning
    fftw_destroy_plan(plan);
    fftw_cleanup();
    // scale the output to obtain the exact inverse
    for (int i = 0; i < N; ++i) {
        out[i][REAL] /= N;
        out[i][IMAG] /= N;
    }
}

/*Display complex numbers in the form a +/- bi. */
void displayComplex(fftw_complex* y)
{
    for (int i = 0; i < N; ++i)
        if (y[i][IMAG] < 0)
            cout << y[i][REAL] << " - " << abs(y[i][IMAG]) << "i" << endl;
        else
            cout << y[i][REAL] << " + " << y[i][IMAG] << "i" << endl;

}

/*Display real part of complex number*/
void displayReal(fftw_complex* y)
{
    for (int i = 0; i < N; ++i)
        cout << y[i][REAL] << endl;

}

/* Test */
int main()
{
    // input array
    fftw_complex x[N];
    // output array
    fftw_complex y[N];
    // fill the first of some numbers
    for (int i = 0; i < N; ++i) {
        x[i][REAL] = i + 1;  // i.e.{1 2 3 4 5 6 7 8}
        x[i][IMAG] = 0;
    }
    // compute the FFT of x and store the result in y.
    fft(x, y);
    // display the result
    cout << "FFT =" << endl;
    displayComplex(y);
    // compute the IFFT of x and store the result in y.
    ifft(y, x);
    // display the result
    cout << "\nIFFT =" << endl;
    displayReal(x);
}
c linker fftw lib
1个回答
1
投票

@HAL9000 谢谢你的提醒。 我发现我转换了错误的

.def
名称,所以我生成了一个“libfftw3-3l.lib”。这就是为什么它无法打开该文件;现在已经解决了!

© www.soinside.com 2019 - 2024. All rights reserved.