我在原生c ++中有struct
,应该传递给COM对象;两者共享相同的头文件,因此COM对象和我的代码之间的结构定义没有区别。 COM方法需要一个指向variant_t vtArg(myIntValue)
的指针作为参数。我可以将类型为int,float,string等的类型作为参数传递给COM,方法是将它们转换为struct
之类的变体。
如何将bool ComMethod(HANDLE *myHandle, MyStruct *myStruct)
转换为变体?
COM方法的签名如下:
SAFEARRAY *pMethodArgs = SafeArrayCreateVector(VT_VARIANT, 0, 2);
LONG index = 0;
SafeArrayPutElement(pMethodArgs, &index, &myHandle);
index = 1;
SafeArrayPutElement(pMethodArgs, &index, &myStruct);
这是我为COM方法构造参数的方法:
$messages = [
'first_name.required' => 'Has de introducir un nombre'
'email.required' => 'Has de introducir un correo'
];
答案 0 :(得分:0)
我尝试了多种方法,发现无法将MyStruct
作为参数发送。我让COM方法返回MyStruct
的实例并试图在C ++中对返回值进行反向工程,但遗憾的是在C ++中没有收到任何内容。
解决方案是使用结构的各个成员创建SAFEARRAY
VARIANT
,或者将各个成员作为单独的参数传递。