|
> という感じで書けばよいのでは・・・
はぁ?
引数の数とか全然違うでしょう?
なんで質問のたびにコロコロ DLL の関数宣言が変わるんでしょうか?
> DLLIMPORT double dll_double_square (double *d,double *a,double *b,double *c,double *w)
なら
Declare Function dll_double_square Lib "cdll.dll" _
(ByRef d As Double, ByRef a As Double, ByRef b As Double, ByRef c As Dobule, ByRef w As Dobule) As Double
で、
youso(0)=5
youso(1)=8
youso(2)=1
youso(3)=4
youso(4)=9
なら
goukei = dll_double_square(youso(0), youso(1), youso(2), youso(3), youso(4))
とするしかないです。
C言語でああいう宣言をしている限り、配列にする意味もないですけど。
それと、引数の値を変えないのならば、ポインタで渡す意味があまりないです。
普通に
DLLIMPORT double dll_double_square(double d,double a,double b,double c,double w)
{
return d+a+b+c+w;
}
で
Declare Function dll_double_square Lib "cdll.dll" _
(ByVal d As Double, ByVal a As Double, ByVal b As Double, ByVal c As Dobule, ByVal w As Dobule) As Double
としたほうが良いです。
どうしても配列で渡したいのならば、前も書きましたが、
DLLIMPORT double dll_double_square (double *d,int size)
{
int i;
double ret = 0.0;
for ( i = 0; i < size; i++ )
{
ret += d[ i ];
}
return ret;
}
として、VBAで
Declare Function dll_double_square Lib "cdll.dll" _
(ByRef d As Double, ByVal size As Long) As Double
と宣言し、
goukei = dll_double_square(youso(0), 5)
のように使います。
これで、また振り出しに戻るような質問がされてきたら、悪いですが私は降りますので。
(ある掲示板にマルチポストもしていたようですから。)
|
|