【发布时间】:2020-07-08 10:51:43
【问题描述】:
我想在运行 Windows 10 的系统中安装 FFTW3 库。我的编译器是 minGW GCC 10.1,我正在使用 Code::Blocks。
我从http://www.fftw.org/install/windows.html下载了64位版本,解压到C:\Program Files (x86)\CodeBlocks\myLibraries\FFTW3。
然后我按照https://www.learncpp.com/cpp-tutorial/a3-using-libraries-with-codeblocks/ 此处描述的步骤进行操作。在第 4 步中,它显示“告诉链接器在哪里查找库的库文件。”
由于没有 .lib 文件,因此必须创建它。我复制了libfftw3-3.def文件,粘贴到mingw64编译器的bin文件夹里面,这样dlltool就可以使用了。请注意,在同一 bin 文件夹中存在 as.exe 可执行文件。我将这个目录,即C:\Users\User\Downloads\minGW_GCC_10_1\mingw64\bin 添加到系统PATH 中,如MinGW dlltool creates empty file 中所述。
然后我以管理员身份打开 cmd 窗口并执行dlltool -v -d nlib32.def -l nlib32.lib。 2KB libfftw3-3.lib 文件是在编译器的 bin 文件夹中创建的。
然后,我再次按照上面提供的链接中描述的步骤进行操作。为方便起见,我直接在下面发布步骤。
每个库一次:
- 获取库。从网站或通过包管理器下载。
- 安装库。将其解压缩到目录或通过包管理器安装。
- 告诉编译器在哪里寻找库的头文件。
这里我设置路径为C:\Program Files (x86)\CodeBlocks\myLibraries\FFTW3
- 告诉链接器在哪里寻找库文件。
这里我设置路径为C:\Users\User\Downloads\minGW_GCC_10_1\mingw64\bin
每个项目一次:
- 告诉链接器要链接哪些静态或导入库文件。
再次将路径设置为C:\Users\User\Downloads\minGW_GCC_10_1\mingw64\bin
-
#在程序中包含库的头文件。
-
确保程序知道在哪里可以找到正在使用的任何动态库。
当我执行以下代码时
#include <iostream>
#include <fftw3.h>
int main(){
int N = 100;
fftw_complex *in;
in = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * N);
}
我收到以下错误:“未定义对 '__imp_fftw_malloc' 的引用”。
我不知道我做错了什么,以至于编译器找不到我正在调用的函数,但我猜问题出在第 7 步,即“确保程序知道在哪里找到任何正在使用的动态库。”步。请注意,这是我第一次不得不处理动态链接库等,所以我仍然感到困惑。
【问题讨论】:
标签: c++ dll codeblocks fftw