| 分類:[VB6 以前]
いつもお世話になっております。 moroと申します。
VB6からVC6で作成したDLLの呼び出しでエラーが発生し困っています。 VC6でそのDLLを呼び出しした際には正常に動作しました。
VC宣言: short 関数( double* 配列X, double* 配列Y, int 数値, double* 小数点数値1, double* 小数点数値2, double* 小数点数値3);
VC呼び出し: long 戻り値; double 配列X[3]; double 配列Y[3]; int 数値; double 小数点数値1,小数点数値2,小数点数値3;
戻り値 = 関数( 配列X, 配列Y, 数値, &小数点数値1, &小数点数値2, &小数点数値1);
VB宣言:
Public Declare Function 関数 Lib "DLL格納先フルパス" (ByRef 配列X() As Any, ByRef 配列Y() As Any, ByVal 数値 As Integer, ByRef 小数点数値1 As double, ByRef 小数点数値2 As double, ByRef 小数点数値3 As double) As Long
VB呼び出し: Dim 戻り値 As Long Dim 数値 As Integer Dim 配列X(n) As double Dim 配列Y(n) As double Dim 小数点数値1 As double Dim 小数点数値2 As double Dim 小数点数値3 As double
戻り値 = 関数(配列X(), 配列Y(), 数値, 小数点数値1, 小数点数値2, 小数点数値3)
VBで上記呼び出しで実行した場合、DLLの呼び出しに失敗しましたというエラーメッセージが出力されます。
VBにてVCへ配列を渡すときにはAs Anyで宣言すれば問題ないと考えております。 ですのでdoubleポインタの渡しが正しくないのではないかと考えます。
上記内容についての解決方法をご存知の方がいらっしゃいましたらご教授願います。
|