fftw3 на 64-битной Windows - PullRequest
       48

fftw3 на 64-битной Windows

0 голосов
/ 14 июля 2010

Я хотел бы использовать FFTW3 на Windows-64 бит.Я следую инструкциям на веб-сайте FFTW : загрузите пакет, разархивируйте, запустите lib.exe, чтобы создать .lib «библиотеки импорта».

После этого я создаю свое приложение (которое запускаетсяпросто отлично, используя FFTW3 (32-битная библиотека dll), и я получаю следующие ошибки:

1> pyramidTransform.obj: ошибка LNK2019: неразрешенный внешний символ __imp_fftw_destroy_plan, на который ссылается функция "int __cdecl fourier2spatialband1 (int, int,float *, float , double () [2], double () [2], double () [2]) "(? fourier2spatialband1 @@ YAHHHPEAM0PEAY01N11 @ Z) 1>pyramidTransform.obj: ошибка LNK2019: неразрешенный внешний символ __imp_fftw_execute, на который ссылается функция «int __cdecl fourier2spatialband1 (int, int, float *, float , double () [2], double () [2], double () [2]) "(? fourier2spatialband1 @@ YAHHHPEAM0PEAY01N11 @ Z) 1> pyramidTransform.obj: ошибка LNK2019: неразрешенный внешний символ __imp_fftw_plan_dft_2d, на который есть ссылка в функции" int __cdecl floou2t *, float , double () [2], double () [2], double () [2]) "(? fourier2spatialband1 @@ YAHHHPEAM0PEAY01N11 @ Z) 1>pyramidTransform.obj: ошибка LNK2019: неразрешенный внешний символ __imp_fftw_free, на который ссылается функция «int __cdecl, разложить (int, int, float *, int, int, float * *, float * *, float *, float * * *, float * * *, float * *, float * *) "(? degpose @@ YAHHHPEAMHHPEAPEAM10PEAPEAPEAM211 @ Z) 1> pyramidTransform.obj: ошибка LNK2019: неразрешенный внешний символ __imp_fftw_malloc, на который ссылается функция« int __cdecl intaz (int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, flo, float * *, float * *, float *, float * * *, float * * *, float * *, float * *) "(? декомпозировать @@ YAHHHPEAMHHPEAPEAM10PEAPEAPEAM211 @ Z) * ​​1020 *

TheПанель свойств для дополнительных зависимостей ясно показывает, что я ссылаюсь на libfftw3-3.lib (создан выше).

Как я могу сказать, на что Visual Studio пытается связаться?Кому-нибудь повезло с FFTW-3 в Windows 64-bit?

Ответы [ 2 ]

2 голосов
/ 14 июля 2010

Я нашел проблему.В FFTW3, поскольку авторы уже скомпилировали библиотеки DLL для Windows, вам необходимо создать файлы библиотек импорта (.lib) из предоставленных файлов .def.Это можно сделать, перейдя в командную строку Visual Studio 2008:

lib /def:libfftw3-3.def

Диспетчер библиотек Microsoft (R), версия 9.00.21022.08 Copyright (C) Microsoft Corporation.Все права защищены.

ССЫЛКА: предупреждение LNK4068: / МАШИНА не указана;по умолчанию X64
Создание библиотеки libfftw3f-3.lib и объекта libfftw3f-3.exp

Проблема заключалась в том, что при первом создании этих файлов .lib я должен был запустить неправильную командную строку.

Дополнительные инструкции можно найти на веб-сайте FFTW для Windows .

Также важно отметить, что если вы выполняете действия, указанные на вышеуказанном веб-сайте, выМне нужно будет запускать команды из папки, которая не требует прав администратора.Сделав это, вы сможете получить ваши .lib файлы.Затем вы просто копируете их в папку VS lib и готовы к работе.

1 голос
/ 14 июля 2010

Вы ссылаетесь на 64-битную версию библиотек, нет? Вы сказали, что он отлично работает с 32-битными DLL-библиотеками FFTW3, поэтому похоже, что вы используете 32-битные библиотеки. 64-битные сборки не могут связываться с 32-битной библиотекой (или 32-битной DLL в этом отношении).

...