我正在Windows机器上使用带有Intel Parallel Studio(以提供intel fortran编译器)的Visual Studio Professional 2015,并且正在使用在Linux机器上运行良好的Fortran程序测试FFTW例程。我在Windows计算机上下载并安装了FFTW(将.def转换为.lib文件),并测试了调用FFTW函数的简单C ++代码。该测试运行良好。
使用test-fortran程序进行相同操作时,出现以下错误消息:
1>------ Build started: Project: fftw_fortran_test, Configuration: Debug x64 ------
1>Linking...
1>Searching libraries
1> Searching libfftw3-3.lib:
1> Searching C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2018\windows\compiler\lib\Intel64_win\ifmodintr.lib:
1> Searching C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2018\windows\compiler\lib\Intel64_win\ifconsol.lib:
.....................................
1> Searching C:\Program Files (x86)\Windows Kits\10\Lib\10.0.17763.0\um\x64\uuid.lib:
1>Finished searching libraries
1>fftw_fortran_test.obj : error LNK2019: unresolved external symbol DFFTW_PLAN_DFT_1D referenced in function MAIN__
1>fftw_fortran_test.obj : error LNK2019: unresolved external symbol DFFTW_EXECUTE referenced in function MAIN__
1>fftw_fortran_test.obj : error LNK2019: unresolved external symbol DFFTW_DESTROY_PLAN referenced in function MAIN__
1>x64\Debug\fftw_fortran_test.exe : fatal error LNK1120: 3 unresolved externals
1>
1>fftw_fortran_test - 4 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
似乎正在搜索FFTW库。我还使用以下命令在库中查找符号,看来函数在库中
C:>dumpbin /exports libfftw3-3.lib | more
Microsoft (R) COFF/PE Dumper Version 14.00.24215.1
Copyright (C) Microsoft Corporation. All rights reserved.
Dump of file libfftw3-3.lib
File Type: LIBRARY
Exports
ordinal name
dfftw_cleanup_
dfftw_cleanup__
dfftw_cleanup_threads_
dfftw_cleanup_threads__
dfftw_cost_
dfftw_cost__
dfftw_destroy_plan_
dfftw_destroy_plan__
dfftw_estimate_cost_
dfftw_estimate_cost__
dfftw_execute_
dfftw_execute__
dfftw_execute_dft_
dfftw_execute_dft__
dfftw_execute_dft_c2r_
dfftw_execute_dft_c2r__
dfftw_execute_dft_r2c_
dfftw_execute_dft_r2c__
dfftw_execute_r2r_
dfftw_execute_r2r__
dfftw_execute_split_dft_
dfftw_execute_split_dft__
dfftw_execute_split_dft_c2r_
dfftw_execute_split_dft_c2r__
dfftw_execute_split_dft_r2c_
dfftw_execute_split_dft_r2c__
dfftw_export_wisdom_
dfftw_export_wisdom__
dfftw_flops_
dfftw_flops__
dfftw_forget_wisdom_
dfftw_forget_wisdom__
dfftw_import_system_wisdom_
dfftw_import_system_wisdom__
dfftw_import_wisdom_
dfftw_import_wisdom__
dfftw_init_threads_
dfftw_init_threads__
dfftw_plan_dft_
dfftw_plan_dft_1d_
dfftw_plan_dft_1d__
dfftw_plan_dft_2d_
dfftw_plan_dft_2d__
dfftw_plan_dft_3d_
dfftw_plan_dft_3d__
我无法弄清楚为什么代码无法编译并链接到FFTW库。任何帮助深表感谢。谢谢!
由于FFTW用C编写,因此我尝试在函数名称的末尾添加下划线,但这无济于事。