FFTW Visual studio неразрешенный символ при соединении - PullRequest
2 голосов
/ 06 мая 2019

Я использую Visual Studio Professional 2015 с Intel Parallel Studio (для предоставления компилятора Intel Fortran) на компьютере с Windows, и я тестирую FFTW-подпрограммы с помощью программы на Fortran, которая прекрасно работает на компьютере с Linux.Я скачал и установил FFTW на компьютер с Windows (преобразовал .def в .lib файлы) и протестировал простой код C ++, который вызывает функции FFTW.Этот тест работает нормально.

При выполнении того же самого с программой 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, я попытался добавить подчеркивание в конце имени функции, но это не помогло.

...