VCのDLLに二次元配列を送るには?

解決


モデ  2006-04-27 02:38:08  No: 131153

こんにちは。VB6.0からVC++6.0に
2次元配列を送って計算させたいのですがうまくいきません。
↓のようにやっています。直したほうがいいところがありましたら
ご教授願います。

'''↓VC dll側

#include <math.h>

_declspec(dllexport) short _stdcall calc(short x, short y, short datax[2][3], short datay[2][3])
{
      short i, sum;

     sum = 0;
     for (i = 0; i < 3; i++)
   {
      sum = sum + abs(datax[x][i] - datay[y][i]);
   }

   return (sum);
}

'''↓VB側

Private Declare Function calc Lib "C:\test\testcalc\Debug\testcalc.dll" (ByVal x As Integer, ByVal y As Integer, datax As Integer, datay As Integer) As Integer

Private Sub Command1_Click()

Dim kotae As Integer

Dim dx(2, 3) As Integer

Dim dy(2, 3) As Integer

dx(0, 0) = 1
dx(0, 1) = 2
dx(0, 2) = 3

dx(1, 0) = 10
dx(1, 1) = 20
dx(1, 2) = 30

dy(0, 0) = 3
dy(0, 1) = 4
dy(0, 2) = 5

dy(1, 0) = 30
dy(1, 1) = 40
dy(1, 2) = 50

kotae = calc(0, 0, dx(0, 0), dy(0, 0))

Print "kotae = "; kotae  ''' abs(1-3)+abs(2-4)+abs(3-5) = 6になるはず

End Sub


魔界の仮面弁士  2006-04-27 04:53:22  No: 131154

(VBの)二次元配列を渡したいなら、C側を SafeArray で実装する必要があるかと。


モデ  2006-04-29 06:09:56  No: 131155

魔界の仮面弁士さん、ありがとうございます。
SafeArrayについて調べてみたいと思います。
お返事おくれてすみませんでした。


モデ  2006-05-05 15:06:28  No: 131156

解決しました。ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加