- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:DLLの利用について)
DLLの利用について
このQ&Aのポイント
- 現在、VCで作成したDLLをVB使うということを行っています。
- DLLに値を渡す際は参照による引渡しをし、DLLで変数の変更を行いたいんです。
- どこがまずいのでしょうか?
- みんなの回答 (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]; } }
お礼
ご解答ありがとうございます。 何とか解決できました。 SAFEARRAYなどについては調べてみます。