Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

fftw в vs 2008

35K
19 января 2010 года
herr Daniel
18 / / 29.08.2008
Доброго времени суток.
Недавно столкнулся с необходимостью запрограммировать алгоритм Быстрого Преобразования Фурье (Fast Fourier Transform - FFT).
В результате поиска в инете нашел интересный сайт http://fftw.org
разработчики на этом сайте предлагают dll FFTW (Fastest Fourier Transform in the West)
Алгоритм интересный и действительно быстро работает.
И в Borland C++ получилось подключить.

Начал создавать в студии 2008 и наткнулся на проблему линковки.
Вот скачал архив с сайта с DLL и h-файлом. Создал по инструкции lib.

Далее написал консольное приложение с простым примером на основе инструкций
Код:
#include "stdafx.h"
#include "fftw3.h"
#include <stdlib.h>

#define SIZE 4
#pragma comment(lib,"fftw3-3.lib")

int main( int argc, char** argv )
{
    double          input[SIZE] = { 1.0, 1.0, 1.0, 1.0 };
    fftw_complex    *data, *fft_result, *ifft_result;
    fftw_plan       plan_forward, plan_backward;
    int             i;

    data        = ( fftw_complex* ) fftw_malloc( sizeof( fftw_complex ) * SIZE );
    fft_result  = ( fftw_complex* ) fftw_malloc( sizeof( fftw_complex ) * SIZE );
    ifft_result = ( fftw_complex* ) fftw_malloc( sizeof( fftw_complex ) * SIZE );

    plan_forward  = fftw_plan_dft_1d( SIZE, data, fft_result, FFTW_FORWARD, FFTW_ESTIMATE );
    plan_backward = fftw_plan_dft_1d( SIZE, fft_result, ifft_result, FFTW_BACKWARD, FFTW_ESTIMATE );

    * populate input data */
    for( i = 0 ; i < SIZE ; i++ ) {
        data[0] = input;
        data[1] = 0.0;
    }

    * print initial data */
    for( i = 0 ; i < SIZE ; i++ ) {
        fprintf( stdout, "data[%d] = { %2.2f, %2.2f }\n",
            i, data[0], data[1] );
    }

    fftw_execute( plan_forward );

    * print fft result */
    for( i = 0 ; i < SIZE ; i++ ) {
        fprintf( stdout, "fft_result[%d] = { %2.2f, %2.2f }\n",
            i, fft_result[0], fft_result[1] );
    }

    fftw_execute( plan_backward );

    * print ifft result */
    for( i = 0 ; i < SIZE ; i++ ) {
        fprintf( stdout, "ifft_result[%d] = { %2.2f, %2.2f }\n",
            i, ifft_result[0] / SIZE, ifft_result[1] / SIZE );
    }

    * free memory */
    fftw_destroy_plan( plan_forward );
    fftw_destroy_plan( plan_backward );
    fftw_free( data );
    fftw_free( fft_result );
    fftw_free( ifft_result );

    return 0;
}


но получаю ошибку линковки 2019

Подскажите, пожалуйста, как быть.
36K
19 января 2010 года
sstorm
55 / / 25.03.2009
Попробуйте по-другому создать проект.
file - new - project - visual C++ - general - Empty project

соответственно, #include "stdafx.h" уберите
35K
19 января 2010 года
herr Daniel
18 / / 29.08.2008
Цитата: sstorm
Попробуйте по-другому создать проект.
file - new - project - visual C++ - general - Empty project

соответственно, #include "stdafx.h" уберите



2 sstorm
Спасибо, после этого все заработало.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог