|
■No75321 (魔界の仮面弁士 さん) に返信
>>Test1_API int __stdcall Test1(LPSAFEARRAY *Type1) > そっちでしたか! まさかと思ったら、本当にセーフ配列だったという。(^_^;
すみません、VC++との連携自体が初なので、どの程度情報が必要なのかもよく理解しておりませんでした。
>>Declare Function Test1 Lib "TestFunc.DLL" (ByRef oStructure() As Structure1) As Integer > > MarshalAs 指定は必要になるだろうということで、SafeArray 指定で > ・SafeArray > ・SafeArray, SafeArraySubType:=VT_USERDEFINED > ・SafeArray, SafeArraySubType:=VT_RECORD, SafeArrayUserDefinedSubType:=GetType(Structure1) > などを試してみましたが、HRESULT が E_INVALIDARG(0x80070057) を返すばかり。
> LPArray でも試してみましたが、 > ・LPArray, ArraySubType:=AsAny > ・LPArray, ArraySubType:=LPStruct > ・LPArray, ArraySubType:=Struct > 実行はできるものの、配列が 1 個になってしまう様子。 > > かといってここに SizeConst や SizeParamIndex を指定すれば、 > MarshalDirectiveException が発生するという状況。
マーシャリング自体もよく理解しておらず、私の方でも調査しているものの難航しております。
引き続き他の方々もご存知の方がおられましたらご回答頂ければ助かります。
|