2

因此,我正在使用前段时间编写的一些旧代码。我最初打算将它移植到 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 和 StackOverflow 上搜索类似问题的解决方案的人,请从我的愚蠢错误中学习,而不是自己犯错误。

这里的关键词是old code。我的代码是为 FFTW 2 编写的,但我使用的是库的版本 3,它具有完全不同的界面。我必须更新所有使用该库的代码,然后一切正常。

嗬!多么愚蠢。我希望有一天谷歌领域的人会发现这很有用。

谢谢你,Dietmar Kühl,帮助我意识到出了什么问题。感谢您花时间安装库并四处寻找;你真好。

4

1 回答 1

2

使用find fftw-3.3 | xargs grep fftw_real揭示

fftw-3.3/ChangeLog:fftw_real 消失了

这似乎是根本问题(好吧,只是提供一个答案来关闭这个问题,真的)。

于 2012-01-08T05:46:01.030 回答