VC側から配列をVBに返そうと思ってます。
しかし、VB側で実行開始すると
「readになることはできませんでした」というエラーが。
どうやって配列渡しが可能なのでしょうか?
VC側でmarkerPosという配列を用意して、VB側から呼び出したいのです。
以下ソースです。
VC側
_declspec(dllexport) short _stdcall markerInfo(short* markerPos)
{
markerPos[0] = 0;
markerPos[1] = 1;
markerPos[2] = 2;
markerPos[3] = 3;
markerPos[4] = 4;
markerPos[5] = 5;
markerPos[6] = 6;
markerPos[7] = 7;
markerPos[8] = 8;
markerPos[9] = 9;
markerPos[10] = 10;
markerPos[11] = 11;
return* (markerPos);
}
VB側
'モジュール内
Private Declare Function markerInfo Lib "tracker.dll" (ByVal markerPos As Single) As Single
Public markerPos(12) As Single
Public markerPosition(12) As Single 'VC++側へ渡す設定データ
'ボタンアクション
markerPosition = markerInfo(markerPos(0))
>Private Declare Function markerInfo Lib "tracker.dll" (ByVal >markerPos As Single) As Single
>Public markerPos(12) As Single
>Public markerPosition(12) As Single 'VC++側へ渡す設定データ
>
>'ボタンアクション
>markerPosition = markerInfo(markerPos(0))
ここらがおかしい気がする。
失礼します。
VB側を以下のように変えてみたら、配列の取得できました。
しかし、数値がおかしなことになってしまいました。
たとえば、VCから"1"という数値を渡すとVBでは"9.18355E-41" という風に。
これは一体何故なのでしょうか?
VB側
'モジュール内
Private Declare Sub markerInfo Lib "traker.dll" (ByRef markerPos As Single)
Public markerPos(12) As Single
Call markerInfo(markerPos(0))
VB6,VC6だと仮定しますが、
VCでshortなら、VBではIntegerでは?
まきさん
ありがとうございます。
>VCでshortなら、VBではIntegerでは?
VCのshortをfloatにかえてみたら動きました!!
ツイート | ![]() |