Проблемы с использованием библиотеки FFTW в Linux и Eclipse IDE - PullRequest
2 голосов
/ 08 января 2012

Итак, я работаю с более старым кодом, который написал некоторое время назад. Первоначально я собирался перенести его на 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 ++ Linker-> Libraries в Eclipse.

Файл заголовка найден просто отлично.

Когда я иду на компиляцию, каждый отдельный тип данных, определенный в библиотеке, не может быть определен, поэтому, по сути, компилятор понятия не имеет, что делать.

Я немного озадачен ...

Вот одна из ошибок (все они идентичны): Линия:

fftw_real a[M][N];

Ошибка:

error: ‘fftw_real’ was not declared in this scope

Я не уверен, что еще можно попробовать. Ваша помощь и опыт очень ценятся. Заранее спасибо.

РЕШИТЬ! Вот решение

Для всех, кто работает с СТАРЫМ КОДОМ и неактивным, ищет в Google и StackOverflow решение аналогичной проблемы, учитесь на моей глупой ошибке, вместо того, чтобы делать свою собственную.

Ключевая фраза здесь старый код . Мой код был написан для FFTW 2, но я использую версию 3 библиотеки, которая имеет совершенно другой интерфейс. Мне пришлось обновить весь мой код, который использует библиотеку, тогда все работало как обычно.

Doh! Как глупо Я надеюсь, что кто-то из Google найдет это полезным когда-нибудь.

Спасибо, Дитмар Кюль, за то, что помог мне понять, что случилось. Я ценю, что вы нашли время, чтобы установить библиотеку и покопаться; это было очень мило с вашей стороны.

1 Ответ

1 голос
/ 08 января 2012

Использование find fftw-3.3 | xargs grep fftw_real показывает, что

fftw-3.3 / ChangeLog: fftw_real больше нет

Похоже, это коренная проблема (ну, просто дать ответ, чтобы этот вопрос был закрыт как на самом деле).

...