fftw в Visual Studio? - PullRequest
       61

fftw в Visual Studio?

3 голосов
/ 28 апреля 2010

Я пытаюсь связать свой проект с fftw, и до сих пор я получил его для компиляции, но не для связи. Как сказано на сайте, я сгенерировал все файлы .lib (хотя я использую только двойную точность) и скопировал их в C:\Program Files\Microsoft Visual Studio 9.0\VC\lib, файл .h в C:\Program Files\Microsoft Visual Studio 9.0\VC\include и файл .dll в C:\windows\system32.

Я скопировал учебную программу, и точная ошибка, которую я получаю:

1>hw10.obj : error LNK2019: unresolved external symbol __imp__fftw_free referenced in function "bool __cdecl test(void)" (?test@@YA_NXZ)
1>hw10.obj : error LNK2019: unresolved external symbol __imp__fftw_destroy_plan referenced in function "bool __cdecl test(void)" (?test@@YA_NXZ)
1>hw10.obj : error LNK2019: unresolved external symbol __imp__fftw_execute referenced in function "bool __cdecl test(void)" (?test@@YA_NXZ)
1>hw10.obj : error LNK2019: unresolved external symbol __imp__fftw_plan_dft_1d referenced in function "bool __cdecl test(void)" (?test@@YA_NXZ)
1>hw10.obj : error LNK2019: unresolved external symbol __imp__fftw_malloc referenced in function "bool __cdecl test(void)" (?test@@YA_NXZ)

Итак, что может быть не так с настройкой моего проекта? Спасибо!

Ответы [ 4 ]

3 голосов
/ 11 апреля 2012

Мой кейс

Использование FFTW в Visual Studio 2010

Предварительно скомпилированные FFTW 3.3.1 Windows DLL устанавливаются с помощью fftw-3.2.1-dll.zip на мой компьютер с Windows XP.

  1. Откройте окно cmd и перейдите в папку lib.exe C:\Program Files\Microsoft Visual Studio 10.0\VC\bin>
  2. Тип lib /def:libfftw3-3.def
  3. Тип lib /def:libfftw3f-3.def
  4. Тип lib /def:libfftw3l-3.def
  5. Если у вас есть ошибка в команде, скопируйте любой файл mspdb80.dll или mspdb100.dll в каталог bin.
  6. Вы получите 6 файлов

    libfftw3-3.exp, libfftw3-3.lib, libfftw3f-3.exp, libfftw3f-3.lib, libfftw3l-3.exp и libfftw3l-3.lib

    и скопируйте его в программный каталог.

  7. Удалить все файлы mspdb80.dll или mspdb100.dll из каталога bin.

  8. Закрытый проект, снова откройте и восстановите его.

2 голосов
/ 28 апреля 2010

Вы действительно ссылались на библиотеку в проекте, который вы строите?

Project -> Properties -> Linker -> Input -> Additional dependencies

Вам необходимо добавить имя файла библиотеки в это поле.

0 голосов
/ 27 марта 2015

У меня была похожая проблема. Что помогло, так это компилирование библиотек fftw Компиляция источника FFTW в Visual studio . На самом деле проблема была в том, чтобы компилировать мое приложение Win 32 и пытаться использовать x64-библиотеки. Поэтому убедитесь, что платформа такая же.

0 голосов
/ 28 апреля 2010

Предполагая, что вы на самом деле связали свой проект с библиотекой lib, и он не работает, используйте /verbose:lib и вставьте вывод этого и вывод

dumpbin /exports fftw.lib | findstr fftw_free
...