• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:DLLの利用について)

DLLの利用について

このQ&Aのポイント
  • 現在、VCで作成したDLLをVB使うということを行っています。
  • DLLに値を渡す際は参照による引渡しをし、DLLで変数の変更を行いたいんです。
  • どこがまずいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

配列丸ごとを渡す場合は、本来なら SAFEARRAY とかを使う必要があって、 かなり面倒なことになります(私も詳しくは知りません)。 数値配列なら、先頭の要素を参照渡しで渡すと、配列の先頭アドレスを渡すことになります。 http://web.archive.org/web/20050907133900/http://www.microsoft.com/japan/developer/library/VBCon98/vbconpassingarraystodllprocedure.htm また、参照渡しの変数に結果を受け取るので、Declare は、 Private Declare Sub Sum Lib "test.dll" (ByRef aa As Integer, ByRef bb As Integer) と、します。 C言語側は、値渡しの変数に結果を返すので、 short bb ではなく、short *bb として、以下のようにします。 _declspec(dllexport) void _stdcall Sum(short *aa, short *bb) { int i; for ( i=0; i<=9; i++){ *bb=*bb+aa[i]; } }

k314593
質問者

お礼

ご解答ありがとうございます。 何とか解決できました。 SAFEARRAYなどについては調べてみます。