在 Linux 和 Eclipse IDE 中使用 FFTW 库的问题
Posted
技术标签:
【中文标题】在 Linux 和 Eclipse IDE 中使用 FFTW 库的问题【英文标题】:Problems using FFTW library in Linux and Eclipse IDE 【发布时间】:2012-01-08 02:58:17 【问题描述】:所以我正在使用我前段时间编写的一些旧代码。我最初打算将它移植到 Windows,取得了一些成功,但很快遇到了其他问题,并决定回到 *nix 环境。原始代码在第一次尝试中编译并运行良好。
我正在运行 Ubuntu 11.10 并选择 Eclipse 作为我的 IDE。编译和运行原始代码时,一切都很好。现在我已经安装了 FFTW 库 ([fftw.org][1]),但似乎无法构建任何使用该库的东西。
我在终端中使用 aptitude 安装了库:
sudo apt-get install libfftw3-dev libfftw3-doc
图书馆肯定存在:
~$ g++ -lfftw3
/usr/lib/gcc/x86_64-linux-gnu/4.6.1/../../../x86_64-linux-gnu/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
collect2: ld returned 1 exit status
我已将“fftw3”添加到我的项目属性->C++ 链接器->Eclipse 中的库列表中。
头文件找到就好了。
当我去编译时,库中定义的每一个数据类型都没有被定义,所以基本上编译器不知道该怎么做。
我有点难过...
这是错误之一(它们都是相同的): 线路:
fftw_real a[M][N];
错误:
error: ‘fftw_real’ was not declared in this scope
我不确定还可以尝试什么。非常感谢您的帮助和专业知识。提前致谢。
已解决!这是解决方案
对于使用 OLD CODE 并且睡眠不足、在 Google 和 *** 上搜索类似问题的解决方案的其他人,请从我的愚蠢错误中学习,而不是自己犯。
这里的关键词是旧代码。我的代码是为 FFTW 2 编写的,但我使用的是库的版本 3,它具有完全不同的界面。我必须更新所有使用该库的代码,然后一切正常。
哇!多么愚蠢。我希望 Google 领域的某个人有一天会发现这很有用。
感谢 Dietmar Kühl 帮助我发现了问题所在。感谢您花时间安装库并四处寻找;你真好。
【问题讨论】:
第一个错误(来自g++ -lfftw3
)似乎表明您试图单独链接库。这行不通。您需要自己提供一个程序(我无法评论添加源代码需要什么,因为我没有使用 Eclipse)。另一个错误看起来好像没有包含任何声明 fftw_real
的文件(我不知道这是在哪里声明的,因为我也没有使用 fftw3)。
第一个错误是为了证明这个库肯定被 g++ 看到了。 “未在此范围内声明”错误来自 Eclipse 以某种方式无法使用 fftw3 库进行编译的事实。如果我制作了一个快速的 hello-world 程序并在终端中使用“g++ helloworld.cpp -lfftw3”进行编译,那么它可以正常工作。
很遗憾,您没有展示 ../Source/ipTool.cpp
的样子。您是否包含"rfftw.h"
?到目前为止,该库与它无关,因为您有编译错误,而不是链接错误。库仅在链接器需要解析未解析的符号时进入图片。
fftw_real
。但是,我可以在 ChangeLog 中找到以下声明:“fftw_real 已消失”(在 2003-03-14 的评论中)。
【参考方案1】:
使用find fftw-3.3 | xargs grep fftw_real
显示
fftw-3.3/ChangeLog:fftw_real 消失了
这似乎是根本问题(嗯,只是提供一个答案,让这个问题在被回答时被关闭,真的)。
【讨论】:
以上是关于在 Linux 和 Eclipse IDE 中使用 FFTW 库的问题的主要内容,如果未能解决你的问题,请参考以下文章
C++ - 将 C++ 代码从 Visual Studio 移植到 Linux Eclipse IDE 时出现问题
使用 Makefile 的旧 C++ 项目 .. 迁移到 Eclipse IDE?