DLLの配列渡しをするには??

解決


けん  2004-11-18 17:57:41  No: 86746  IP: [192.*.*.*]

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))

編集 削除
もっつう  2004-11-18 18:11:46  No: 86747  IP: [192.*.*.*]

>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))

ここらがおかしい気がする。

編集 削除
けん  2004-11-18 18:27:25  No: 86748  IP: [192.*.*.*]

失礼します。
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))

編集 削除
まき  2004-11-18 18:53:09  No: 86749  IP: [192.*.*.*]

VB6,VC6だと仮定しますが、

VCでshortなら、VBではIntegerでは?

編集 削除
けん  2004-11-18 19:59:43  No: 86750  IP: [192.*.*.*]

まきさん

ありがとうございます。

>VCでshortなら、VBではIntegerでは?
VCのshortをfloatにかえてみたら動きました!!

編集 削除