簡體   English   中英

如何在C ++中將用戶定義的結構轉換為變量?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM