问题
I'm trying to link my project with fftw and so far, I've gotten it to compile, but not link. As the site said, I generated all the .lib files (even though I'm only using double precision), and copied them to C:\Program Files\Microsoft Visual Studio 9.0\VC\lib
, the .h file to C:\Program Files\Microsoft Visual Studio 9.0\VC\include
and the .dll to C:\windows\system32
.
I've copied the tutorial program, and the exact error I am getting is:
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)
So, what could be wrong with my project setup? Thanks!
回答1:
Have you actually linked against the library in the project you're building?
Project -> Properties -> Linker -> Input -> Additional dependencies
You need to add the library's filename to that field.
回答2:
My case
Using FFTW in Visual Studio 2010
Precompiled FFTW 3.3.1 Windows DLLs install using fftw-3.2.1-dll.zip, on my Windows XP machine.
- Open
cmd
window and go tolib.exe
folderC:\Program Files\Microsoft Visual Studio 10.0\VC\bin>
- Type
lib /def:libfftw3-3.def
- Type
lib /def:libfftw3f-3.def
- Type
lib /def:libfftw3l-3.def
- If you have a error on command, copy any
mspdb80.dll
ormspdb100.dll
file to in bin directory. You will get 6 files
libfftw3-3.exp, libfftw3-3.lib, libfftw3f-3.exp, libfftw3f-3.lib, libfftw3l-3.exp and libfftw3l-3.lib
and copy it to programming directory.
Delete all
mspdb80.dll
ormspdb100.dll
file from bin directory.Closed Project and open again and rebuild it again.
回答3:
Assuming you've actually linked your project against the lib and it doesn't work, use /verbose:lib
and paste the output of that and the output of
dumpbin /exports fftw.lib | findstr fftw_free
回答4:
I had similar problem. What helped was compiling the fftw libs with this help Compiling FFTW source in Visual studio. Actually more closely the problem was compiling my application Win 32 and trying to use x64 -libraries. So make sure the platform is same.
来源:https://stackoverflow.com/questions/2727293/fftw-in-visual-studio