windows下GCC编译器使用FFTW预编译版共享库使用

  1. 下载共享库,64-bit version: fftw-3.3.5-dll64.zip (3.1MB),然后解压到D:\program\fftw-3.3.5-dll64。目录中没有现成的静态库用于链接。
  2. 这一步是要生成静态库文件,用于提供连接时的符号说明,对于使用MSVC路线需要用到lib.exe,对于使用windows的gcc需要使用dlltool.exe,执行相关命令后会生成.a文件。

链接阶段需要 .lib 文件

  • .dll 文件是运行时加载的,链接器需要对应的导入库(.lib 文件) 才能解析符号。例如,libfftw3-3.dll 对应的导入库通常是 libfftw3-3.lib
  • 确保 FFTW 安装目录中包含 .lib 文件,并修改 CMake 链接这些文件。
D:/program/Qt/Qt5.12.9/Tools/mingw730_64/bin/dlltool.exe -d D:/program/fftw-3.3.5-dll64/libfftw3-3.def -l D:/program/fftw-3.3.5-dll64/libfftw3-3.a
D:/program/Qt/Qt5.12.9/Tools/mingw730_64/bin/dlltool.exe -d D:/program/fftw-3.3.5-dll64/libfftw3f-3.def -l D:/program/fftw-3.3.5-dll64/libfftw3f-3.a
D:/program/Qt/Qt5.12.9/Tools/mingw730_64/bin/dlltool.exe -d D:/program/fftw-3.3.5-dll64/libfftw3l-3.def -l D:/program/fftw-3.3.5-dll64/libfftw3l-3.a
  1. 使用
cmake_minimum_required(VERSION 3.10)
project(MyFFTWProject)

# 设置C和C++编译器
set(CMAKE_C_COMPILER "D:/program/Qt/Qt5.12.9/Tools/mingw730_64/bin/gcc.exe")
set(CMAKE_CXX_COMPILER "D:/program/Qt/Qt5.12.9/Tools/mingw730_64/bin/g++.exe")

# 设置FFTW的路径
set(FFTW_DIR "D:/program/fftw-3.3.5-dll64")

# 包含FFTW头文件路径
include_directories(${FFTW_DIR})

# 添加可执行文件
add_executable(MyExecutable main.cpp)

# 链接FFTW库
target_link_libraries(MyExecutable
    ${FFTW_DIR}/libfftw3-3.a
    ${FFTW_DIR}/libfftw3f-3.a
    ${FFTW_DIR}/libfftw3l-3.a
)

# 添加DLL文件到可执行文件目录
add_custom_command(TARGET MyExecutable POST_BUILD
    COMMAND ${CMAKE_COMMAND} -E copy_if_different
    ${FFTW_DIR}/libfftw3-3.dll
    ${FFTW_DIR}/libfftw3f-3.dll
    ${FFTW_DIR}/libfftw3l-3.dll
    $<TARGET_FILE_DIR:MyExecutable>
)
  • libfftw3-3.dll:这是双精度(double precision)版本的FFTW库,适用于大多数需要高精度计算的场景。
  • libfftw3f-3.dll:这是单精度(single precision)版本的FFTW库,适用于对精度要求不高但需要更快计算速度的场景。
  • libfftw3l-3.dll:这是长双精度(long double precision)版本的FFTW库,适用于需要更高精度的计算。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值