掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
VC++で作成したDLLをVBで呼び出したときに生じるアプリケーションエラーを回避するには? (ID:55030)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
訂正:「職説」→「直接」でした. なお,VB,VC++のソースは以下の通りです. どうぞ宜しくお願いいたします. ---[VB] Form1.frm---------------------------------------------- Option Explicit Private Type fftw_complex Re As Double Im As Double End Type Private Declare Function dft_1d Lib "FFTW.dll" _ (ByVal n As Long, FFTWin As fftw_complex, FFTWout As fftw_complex, ByVal sign As Long) Dim n As Long Dim FFTin(2 ^ 16 - 1) As fftw_complex Dim FFTout(2 ^ 16 - 1) As fftw_complex Dim sign As Long Const FFTW_FORWARD = -1 Const FFTW_BACKWARD = 1 Private Sub Command1_Click() Dim i As Long Dim j As Long Open "Sample.txt" For Input As #1 Open "SampleOut.txt" For Output As #2 i = 0 Do While Not EOF(1) Input #1, FFTin(i).Re FFTin(i).Im = 0 i = i + 1 Loop Close #1 Call dft_1d(i - 1, FFTin(0), FFTout(0), FFTW_FORWARD) For j = 0 To i - 1 Write #2, FFTout(i).Re, FFTout(i).Im Next Close #2 End Sub ---[VC++] FTTW.cpp(一部抜粋)------------------------------ FFTW_API void __stdcall dft_1d(int n, fftw_complex *FFTWin, fftw_complex *FFTWout, int sign) { fftw_complex *in, *out; fftw_plan p; in = (double (*)[2])fftw_malloc(sizeof(fftw_complex) * n); out = (double (*)[2])fftw_malloc(sizeof(fftw_complex) * n); //<sign> FFTW_FORWARD(-1), FFTW_BACKWARD(1) <flags> FFTW_ESTIMATE, FFTW_MEASURE in = FFTWin; p = fftw_plan_dft_1d(n, in, out, sign, FFTW_ESTIMATE); fftw_execute(p); /* repeat as needed */ FFTWout = out; fftw_destroy_plan(p); fftw_free(in); fftw_free(out); } ---[VC++] FTTW.h ----------------------------------------- #ifdef FFTW_EXPORTS #define FFTW_API __declspec(dllexport) #else #define FFTW_API __declspec(dllimport) #endif #include "fftw3.h" FFTW_API void __stdcall dft_1d(int n, fftw_complex *in, fftw_complex *out, int sign, unsigned flags); ---[VC++] FFTW.def ------------------------------------------ LIBRARY fftw.dll EXPORTS dft_1d -----------------------------------------------------------------
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.