前提・実現したいこと
FFT(高速フーリエ変換)をvisual studio2019で使いたいです。
発生している問題・エラーメッセージ
コマンドプロンプト上でfftwのアプリケーションを実行すると、
「アプリケーションを実行できませんでした(0xc000007b)。[OK]をクリックしてアプリケーションを閉じてください。」
と新しいウィンドウが出てきて表示されます。
該当のソースコード
https://w.atwiki.jp/amaeda/pages/12.html
↑のFFTW@wikiというサイトの「基本の使い方 1次元FFT」というサンプルプログラムをそのまま使っています。
c++
1#include <stdio.h> 2#define _USE_MATH_DEFINES 3#include <math.h> 4 5#include "fftw3.h" 6#pragma comment( lib, "fftw3.lib" ) //←ただしここは#pragma comment(lib, "libfftw3-3.lib")と書き換えました。 7 8#define SIZE 64 9 10int main( void ){ 11 12 fftw_complex *in = NULL; 13 fftw_complex *out = NULL; 14 fftw_plan p = NULL; 15 int i; 16 17 size_t mem_size = sizeof(fftw_complex) * SIZE; 18 in = (fftw_complex*)fftw_malloc( mem_size ); 19 out = (fftw_complex*)fftw_malloc( mem_size ); 20 21 if( !in || !out ){ 22 fprintf( stderr, "failed to allocate %d[byte] memory(-.-)\n", (int)mem_size ); 23 return false; 24 } 25 26 p = fftw_plan_dft_1d( SIZE, in, out, FFTW_FORWARD, FFTW_ESTIMATE ); 27 28 // input data creation 29 printf("----- INPUT -----\n"); 30 for( i=0; i<SIZE; i++ ){ 31 in[i][0] = 1 + 2*sin(2*M_PI*i/SIZE) + sin(4*M_PI*i/SIZE); 32 in[i][1] = 0; 33 printf("%d : %lf\n", i, in[i][0] ); 34 } 35 36 fftw_execute(p); 37 38 // output is DC exchanged and scaled. 39 double scale = 1. / SIZE; 40 printf("\n----- RESULT -----\n"); 41 for( i=0; i<SIZE; i++ ){ 42 printf("%d : %lf %lfi\n", i, out[i][0]*scale, out[i][1]*scale ); 43 } 44 45 if( p ) fftw_destroy_plan(p); 46 if( in ) fftw_free(in); 47 if( out ) fftw_free(out); 48 49 return true; 50}
試したこと
http://blog.livedoor.jp/locked_empty_shell/archives/8968994.html
↑このサイトの1~3章までの手順をそのまま踏襲しました。
つまり、FFTWのダウンロード、.libファイルの生成、インクルードパスの指定、リンカーの設定、環境変数の設定までをしました。
そののちvisual studio上で上記のソースコードをビルドしました。正常終了しました。
ソリューションのフォルダにDebugが作成されたため、コマンドプロンプトを開いて
cd C:\~~~\Debugとパスを入力して移動しました。
そこにあるfftw.exe(と名付けた)アプリケーションファイルを実行しましたが、
「アプリケーションを実行できませんでした(0xc000007b)。[OK]をクリックしてアプリケーションを閉じてください。」
と表示された次第です。
補足情報(FW/ツールのバージョンなど)
使用言語はC++,
PCのOSはWindows 10 Pro,
統合開発環境はVisual Studio 2019,
を使っています。
回答1件
あなたの回答
tips
プレビュー