[英]How to convert user-defined struct to variant in c++?
我在本地c ++中有一個struct
,應該將其傳遞給COM對象; 兩者共享相同的頭文件,因此COM對象和我的代碼之間的結構定義沒有差異。 COM方法希望將指向struct
的指針作為參數。 通過將它們轉換為variant_t vtArg(myIntValue)
類的variant_t vtArg(myIntValue)
,我能夠將int,float,string等類型作為參數傳遞給COM。
如何將struct
轉換為variant?
COM方法的簽名如下所示:
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);
我嘗試了多種方法,發現無法將MyStruct
作為參數發送。 我使COM方法返回MyStruct
一個實例,並嘗試對C ++中的返回值進行反向工程,但不幸的是,C ++沒有收到任何信息。
解決方案是使用結構的各個成員創建SAFEARRAY
of VARIANT
,或將各個成員作為單獨的參數傳遞。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.