こんにちは。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
(VBの)二次元配列を渡したいなら、C側を SafeArray で実装する必要があるかと。
魔界の仮面弁士さん、ありがとうございます。
SafeArrayについて調べてみたいと思います。
お返事おくれてすみませんでした。
解決しました。ありがとうございました。
ツイート | ![]() |