数値渡しするには?


ぺら  2008-06-14 15:01:25  No: 139899  IP: 192.*.*.*

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関数で製作しています。

編集 削除
 2008-06-26 12:14:23  No: 139900  IP: 192.*.*.*

参照渡しにしないと値は返ってこないのでは?
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

編集 削除