因此,我正在使用前段时间编写的一些旧代码。我最初打算将它移植到 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,帮助我意识到出了什么问题。感谢您花时间安装库并四处寻找;你真好。