【发布时间】:2012-04-20 19:24:36
【问题描述】:
我一直在尝试将我的项目与 fftw 链接,到目前为止,我已经对其进行了编译,并完成了“通过 1”的链接,但没有完成。正如 FFTW 网站所说,我生成了所有 .lib 文件,并将它们复制到 C:\Program Files\Microsoft Visual Studio 10.0\VC\lib\amd64 (因为我正在为 x64 编译,并且这个目录包含在我的库目录),我的项目中的 .h 文件和我的项目可执行文件目录中的 .dll 文件。
我复制了教程程序,我得到的确切错误是:
1>fftw_test.obj : error LNK2019: unresolved external symbol __imp__fftw_free referenced in function "int __cdecl fftw(void)" (?fftwt@@YAHXZ)
1>fftw_test.obj : error LNK2019: unresolved external symbol __imp__fftw_destroy_plan referenced in function "int __cdecl fftw(void)" (?fftwt@@YAHXZ)
1>fftw_test.obj : error LNK2019: unresolved external symbol __imp__fftw_execute referenced in function "int __cdecl fftw(void)" (?fftwt@@YAHXZ)
1>fftw_test.obj : error LNK2019: unresolved external symbol __imp__fftw_plan_dft_1d referenced in function "int__cdecl fftw(void)" (?fftwt@@YAHXZ)
1>fftw_test.obj : error LNK2019: unresolved external symbol __imp__fftw_malloc referenced in function "int__cdecl fftw(void)" (?fftwt@@YAHXZ)
我试过了:
Project -> Properties -> Linker -> Input -> Additional dependencies
包含 libfftw3-3.lib
和 dumpbin /exports libfftw3-3.lib 生成 _fftw_free _fftw_destroy_plan 以及其他无法解决的功能。
是不是因为它正在寻找 __imp_fftw_functionname 而它只寻找 _fftw_functionname 函数?
无论如何,也许这也会有所帮助:在第 1 阶段,它多次显示 搜索 C:...\VC\lib\amd64\libfftw3-3.lib: 但它从来没有像其他库那样说“找到”、“引用”或“加载”。
【问题讨论】:
-
您实际上将第 3 方库复制到了您的 Visual Studio 安装目录中??更好的方法是在 Linker -> General -> Additional Library Directories 中输入库路径,然后在 Additional Dependencies 中输入库名称已经完成了。
-
__imp 前缀用于声明为 __declspec(dllimport) 的符号。
标签: c++ visual-c++ linker