- 締切済み
VBからVCDLLへのtypedefパラメータの渡し方
[VS2005 XP] お世話になります。 VCで作成したDLLをVBから呼び出したいのですが VC側 typedef unsigned int KTY[16];/*固定長配列*/ void AAA(const int Len, const unsigned char *str, KTY k){/*第三パラメータ k*/ ---- } VB側現在 <DllImport("***.dll")> _ Public Shared Sub AAA( _ ByVal Len As Integer, _ ByVal str As String, _ ByRef k() As UInt32) End Sub Dim kk() As UInt32 = Nothing Dim c As String = "1234567890" AAA(10, c, kk) ------- 第三パラメータをVC側で埋めて返してくれるはずなのですがNothingのままです。 typedefで固定長配列に宣言された値を取り出すにはどうしたらよいのでしょうか? VCは本日ソースを渡されただけで初めて触ります。 よろしくお願いいたします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- dsuekichi
- ベストアンサー率64% (171/265)
> VCは本日ソースを渡されただけで初めて触ります。 > typedefで固定長配列に宣言された値を typedefは型の宣言だけですので、実体の作成がどうなっているかが重要だと思います。 > 第三パラメータをVC側で埋めて返してくれるはずなのですが って事ですが、確認です。 「VC側で埋めて返してくれる」のですか? それとも「VC側で『領域を確保して』埋めて返してくれる」のですか? 前者なら、VB側で領域確保しなければならないので、Nothingは渡せないと思いますけど・・・ > Dim kk(16) As UInt32 とか・・・
お礼
dsuekichiさん、回答ありがとうございます。 > 前者なら、VB側で領域確保しなければならないので... 昨夜投稿後、それに気付き試してみたのですが駄目でした。 本日再度挑戦し、ダメモトで宣言 ByRef k() As UInt32 を ByRef k As UInt32() にしたら、すんなり動いてしまいました。 うぅ~んVBも良く判っていないことが露呈してしまいました。