VBのDLLについて質問です。数値渡しについて
VBで数値を代入したものをDLLに引渡し、計算してそれをVBに渡して表示させるといった感じのプログラムを作っています。
そこで、DLLに渡していることはVC++のデバッグ等で確認が取れたのですが、どうやら再びVBに引き渡すところで正常に引き渡せないようです。しかし、すべて引き渡せていないかというと、一部がひきわたせてないのです。下のソースはVBの標準モジュールの呼び出すDeclareのところの中身です。変数のa、b、Xは配列としてVBでのデータを入力、nもVBでデータ入力、z、errorm、ctはDLLのCソース内から数値をVBに引き渡すんですが、後の3つの値がどうもかえっていないようです。どこか間違っているのですか?教えてください。
ByRef a As Double, ByRef b As Double, ByRef X As Double, ByVal n As Long, ByVal z As Double, ByVal errorm As Long, ByVal ct As Long
ちなみにCはvoid関数で製作しています。
参照渡しにしないと値は返ってこないのでは?
VC側の定義はどうなっていますか?
//dllt.h
DLLT_API double __stdcall subtract(double *sub1,LONG *sub2);
//dllt.cpp
DLLT_API double __stdcall subtract(double *sub1,LONG *sub2) {
*sub1 =20.0;
*sub2 = 8;
return (*sub1 - *sub2);
}
VB
Public Declare Function subtract Lib "C:\VCSAMP\dllt\Debug\dllt.dll" ( _
ByRef int1 As Double, _
ByRef int2 As Long) As Double
Private Sub Command1_Click()
Dim int1 As Double
Dim int2 As Long
Dim ans As Long
int1 = 10
int2 = 5
ans = subtract(int1, int2)
Text1.Text = int1
Text2.Text = int2
Text3.Text = ans
End Sub